netfilter: ctnetlink: fix possible refcount leak in ctnetlink_create_conntrack()

[ Upstream commit ac4893980bbe79ce383daf9a0885666a30fe4c83 ]

nf_ct_put() needs to be called to put the refcount got by
nf_conntrack_find_get() to avoid refcount leak when
nf_conntrack_hash_check_insert() fails.

Fixes: 7d367e0668 ("netfilter: ctnetlink: fix soft lockup when netlink adds new entries (v2)")
Signed-off-by: Hangyu Hua <hbh25y@gmail.com>
Acked-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
Hangyu Hua 2023-02-10 15:17:30 +08:00 committed by Greg Kroah-Hartman
parent fe65d6f26b
commit 5d0d38805d

View File

@ -2086,12 +2086,15 @@ ctnetlink_create_conntrack(struct net *net,
err = nf_conntrack_hash_check_insert(ct); err = nf_conntrack_hash_check_insert(ct);
if (err < 0) if (err < 0)
goto err2; goto err3;
rcu_read_unlock(); rcu_read_unlock();
return ct; return ct;
err3:
if (ct->master)
nf_ct_put(ct->master);
err2: err2:
rcu_read_unlock(); rcu_read_unlock();
err1: err1: