]> git.baikalelectronics.ru Git - kernel.git/commit
netns: add and use net_ns_barrier
authorFlorian Westphal <fw@strlen.de>
Tue, 30 May 2017 09:38:12 +0000 (11:38 +0200)
committerPablo Neira Ayuso <pablo@netfilter.org>
Mon, 19 Jun 2017 17:09:19 +0000 (19:09 +0200)
commit5582102124e7fc64480f1e32b107efea83d50561
treee1ce697fb956d559617dc47bb99743fc54b7f2f8
parent173b5ed9ae9c4ae185e476b7a77ddd237d2ca090
netns: add and use net_ns_barrier

Quoting Joe Stringer:
  If a user loads nf_conntrack_ftp, sends FTP traffic through a network
  namespace, destroys that namespace then unloads the FTP helper module,
  then the kernel will crash.

Events that lead to the crash:
1. conntrack is created with ftp helper in netns x
2. This netns is destroyed
3. netns destruction is scheduled
4. netns destruction wq starts, removes netns from global list
5. ftp helper is unloaded, which resets all helpers of the conntracks
via for_each_net()

but because netns is already gone from list the for_each_net() loop
doesn't include it, therefore all of these conntracks are unaffected.

6. helper module unload finishes
7. netns wq invokes destructor for rmmod'ed helper

CC: "Eric W. Biederman" <ebiederm@xmission.com>
Reported-by: Joe Stringer <joe@ovn.org>
Signed-off-by: Florian Westphal <fw@strlen.de>
Acked-by: David S. Miller <davem@davemloft.net>
Acked-by: "Eric W. Biederman" <ebiederm@xmission.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
include/net/net_namespace.h
net/core/net_namespace.c
net/netfilter/nf_conntrack_core.c