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