Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4edf547b authored by Johannes Berg's avatar Johannes Berg Committed by David S. Miller
Browse files

net: explain netns notifiers a little better



Eric explained this to me -- and afterwards the comment
made sense, but not before. Add the the critical point
about interfaces having to be gone from the netns before
subsys notifiers are called.

Signed-off-by: default avatarJohannes Berg <johannes@sipsolutions.net>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 27e09551
Loading
Loading
Loading
Loading
+9 −7
Original line number Diff line number Diff line
@@ -239,13 +239,15 @@ struct pernet_operations {
 * needs per network namespace operations use device pernet operations,
 * otherwise use pernet subsys operations.
 *
 * This is critically important.  Most of the network code cleanup
 * runs with the assumption that dev_remove_pack has been called so no
 * new packets will arrive during and after the cleanup functions have
 * been called.  dev_remove_pack is not per namespace so instead the
 * guarantee of no more packets arriving in a network namespace is
 * provided by ensuring that all network devices and all sockets have
 * left the network namespace before the cleanup methods are called.
 * Network interfaces need to be removed from a dying netns _before_
 * subsys notifiers can be called, as most of the network code cleanup
 * (which is done from subsys notifiers) runs with the assumption that
 * dev_remove_pack has been called so no new packets will arrive during
 * and after the cleanup functions have been called.  dev_remove_pack
 * is not per namespace so instead the guarantee of no more packets
 * arriving in a network namespace is provided by ensuring that all
 * network devices and all sockets have left the network namespace
 * before the cleanup methods are called.
 *
 * For the longest time the ipv4 icmp code was registered as a pernet
 * device which caused kernel oops, and panics during network