netfilter: ipset: do not call ipset_nest_end after nla_nest_cancel

[ Upstream commit 708abf74dd ]

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: 45040978c8 ("netfilter: ipset: Fix set:list type crash when flush/dump set in parallel")
Signed-off-by: Pan Bian <bianpan2016@163.com>
Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
Pan Bian 2018-12-10 14:39:37 +01:00 коммит произвёл Greg Kroah-Hartman
Родитель 214b5617cc
Коммит e8267a5ec4
1 изменённых файлов: 1 добавлений и 1 удалений

Просмотреть файл

@ -542,8 +542,8 @@ nla_put_failure:
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;