diff options
author | 2018-01-06 15:24:18 +0100 | |
---|---|---|
committer | 2018-01-08 18:11:12 +0100 | |
commit | f998b6b10144cd9809da6af02758615f789e8aa1 (patch) | |
tree | 1d1c079d55ba9664cf9cac259de7b72ada1f5d5b /net/netfilter/ipset/ip_set_core.c | |
parent | netfilter: ipset: Fix "don't update counters" mode when counters used at the ... (diff) | |
download | linux-f998b6b10144cd9809da6af02758615f789e8aa1.tar.gz linux-f998b6b10144cd9809da6af02758615f789e8aa1.tar.bz2 linux-f998b6b10144cd9809da6af02758615f789e8aa1.zip |
netfilter: ipset: Missing nfnl_lock()/nfnl_unlock() is added to ip_set_net_exit()
Patch "netfilter: ipset: use nfnl_mutex_is_locked" is added the real
mutex locking check, which revealed the missing locking in ip_set_net_exit().
Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
Reported-by: syzbot+36b06f219f2439fe62e1@syzkaller.appspotmail.com
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'net/netfilter/ipset/ip_set_core.c')
-rw-r--r-- | net/netfilter/ipset/ip_set_core.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/net/netfilter/ipset/ip_set_core.c b/net/netfilter/ipset/ip_set_core.c index e00299051e79..728bf31bb386 100644 --- a/net/netfilter/ipset/ip_set_core.c +++ b/net/netfilter/ipset/ip_set_core.c @@ -2078,6 +2078,7 @@ ip_set_net_exit(struct net *net) inst->is_deleted = true; /* flag for ip_set_nfnl_put */ + nfnl_lock(NFNL_SUBSYS_IPSET); for (i = 0; i < inst->ip_set_max; i++) { set = ip_set(inst, i); if (set) { @@ -2085,6 +2086,7 @@ ip_set_net_exit(struct net *net) ip_set_destroy_set(set); } } + nfnl_unlock(NFNL_SUBSYS_IPSET); kfree(rcu_dereference_protected(inst->ip_set_list, 1)); } |