netfilter: ipset: pernet ops must be unregistered last
authorFlorian Westphal <fw@strlen.de>
Tue, 26 Sep 2017 09:57:54 +0000 (11:57 +0200)
committerBen Hutchings <ben@decadent.org.uk>
Mon, 1 Jan 2018 20:51:42 +0000 (20:51 +0000)
commitd87ebfe7d3cfa8d617afff30980925da88d08db3
tree1f33ff10059639774c89705431e79cff92283d39
parenta3c5d5b70f4ebcca904f5d7c3c5548cde0f18b6e
netfilter: ipset: pernet ops must be unregistered last

commit e23ed762db7ed1950a6408c3be80bc56909ab3d4 upstream.

Removing the ipset module leaves a small window where one cpu performs
module removal while another runs a command like 'ipset flush'.

ipset uses net_generic(), unregistering the pernet ops frees this
storage area.

Fix it by first removing the user-visible api handlers and the pernet
ops last.

Fixes: 1785e8f473082 ("netfiler: ipset: Add net namespace for ipset")
Reported-by: Li Shuang <shuali@redhat.com>
Signed-off-by: Florian Westphal <fw@strlen.de>
Acked-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
[bwh: Backported to 3.16: adjust context]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
net/netfilter/ipset/ip_set_core.c