Message ID | 1543228930-103509-1-git-send-email-bianpan2016@163.com |
---|---|
State | Accepted |
Delegated to: | Jozsef Kadlecsik |
Headers | show |
Series | netfilter: ipset: do not call ipset_nest_end after nla_nest_cancel | expand |
Hi, On Mon, 26 Nov 2018, Pan Bian wrote: > 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: 45040978c89("netfilter: ipset: Fix set:list type crash when > flush/dump set in parallel") Good catch, thank you. Patch is applied in ipset git tree. Best regards, Jozsef > Signed-off-by: Pan Bian <bianpan2016@163.com> > --- > net/netfilter/ipset/ip_set_list_set.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/net/netfilter/ipset/ip_set_list_set.c b/net/netfilter/ipset/ip_set_list_set.c > index 4eef55d..8da228d 100644 > --- a/net/netfilter/ipset/ip_set_list_set.c > +++ b/net/netfilter/ipset/ip_set_list_set.c > @@ -531,8 +531,8 @@ list_set_list(const struct ip_set *set, > ret = -EMSGSIZE; > } else { > cb->args[IPSET_CB_ARG0] = i; > + ipset_nest_end(skb, atd); > } > - ipset_nest_end(skb, atd); > out: > rcu_read_unlock(); > return ret; > -- > 2.7.4 > > > - E-mail : kadlec@blackhole.kfki.hu, kadlecsik.jozsef@wigner.mta.hu PGP key : http://www.kfki.hu/~kadlec/pgp_public_key.txt Address : Wigner Research Centre for Physics, Hungarian Academy of Sciences H-1525 Budapest 114, POB. 49, Hungary
diff --git a/net/netfilter/ipset/ip_set_list_set.c b/net/netfilter/ipset/ip_set_list_set.c index 4eef55d..8da228d 100644 --- a/net/netfilter/ipset/ip_set_list_set.c +++ b/net/netfilter/ipset/ip_set_list_set.c @@ -531,8 +531,8 @@ list_set_list(const struct ip_set *set, ret = -EMSGSIZE; } else { cb->args[IPSET_CB_ARG0] = i; + ipset_nest_end(skb, atd); } - ipset_nest_end(skb, atd); out: rcu_read_unlock(); return ret;
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: 45040978c89("netfilter: ipset: Fix set:list type crash when flush/dump set in parallel") Signed-off-by: Pan Bian <bianpan2016@163.com> --- net/netfilter/ipset/ip_set_list_set.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)