Commit 708abf74 authored by Pan Bian's avatar Pan Bian Committed by Pablo Neira Ayuso

netfilter: ipset: do not call ipset_nest_end after nla_nest_cancel

In the error handling block, nla_nest_cancel(skb, atd) is called to
cancel the nest operation. But then, ipset_nest_end(skb, atd) is
unexpected called to end the nest operation. This patch calls the
ipset_nest_end only on the branch that nla_nest_cancel is not called.

Fixes: 45040978 ("netfilter: ipset: Fix set:list type crash when flush/dump set in parallel")
Signed-off-by: default avatarPan Bian <bianpan2016@163.com>
Signed-off-by: default avatarJozsef Kadlecsik <kadlec@blackhole.kfki.hu>
Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
parent 530aad77
...@@ -531,8 +531,8 @@ list_set_list(const struct ip_set *set, ...@@ -531,8 +531,8 @@ list_set_list(const struct ip_set *set,
ret = -EMSGSIZE; ret = -EMSGSIZE;
} else { } else {
cb->args[IPSET_CB_ARG0] = i; cb->args[IPSET_CB_ARG0] = i;
ipset_nest_end(skb, atd);
} }
ipset_nest_end(skb, atd);
out: out:
rcu_read_unlock(); rcu_read_unlock();
return ret; return ret;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment