On Tue, 2017-11-14 at 16:53 +0300, Kirill Tkhai wrote: > Curently mutex is used to protect pernet operations list. It makes > cleanup_net() to execute ->exit methods of the same operations set, > which was used on the time of ->init, even after net namespace is > unlinked from net_namespace_list. > ...
> The solution is to convert net_mutex to the rw_semaphore. Then, > pernet_operations::init/::exit methods, modifying the net-related data, > will require down_read() locking only, while down_write() will be used > for changing pernet_list. > ... > This patch requires commit 76f8507f7a64 "locking/rwsem: Add > down_read_killable()" > from Linus tree (not in net-next yet). Looks great, thanks for doing this. I wonder if the down_read_killable() is really needed, maybe a down_read() would not be blocking the thread too long after this change.