net: sched: act_ct: fix possible refcount leak in tcf_ct_init()
[ Upstream commit 6e23ec0ba92d426c77a73a9ccab16346e5e0ef49 ]
nf_ct_put need to be called to put the refcount got by tcf_ct_fill_params
to avoid possible refcount leak when tcf_ct_flow_table_get fails.
Fixes: c34b961a24
("net/sched: act_ct: Create nf flow table per zone")
Signed-off-by: Hangyu Hua <hbh25y@gmail.com>
Link: https://lore.kernel.org/r/20220923020046.8021-1-hbh25y@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:

committed by
Greg Kroah-Hartman

parent
fa065e6081
commit
fde656dbc3
@@ -1293,7 +1293,7 @@ static int tcf_ct_init(struct net *net, struct nlattr *nla,
|
|||||||
|
|
||||||
err = tcf_ct_flow_table_get(params);
|
err = tcf_ct_flow_table_get(params);
|
||||||
if (err)
|
if (err)
|
||||||
goto cleanup;
|
goto cleanup_params;
|
||||||
|
|
||||||
spin_lock_bh(&c->tcf_lock);
|
spin_lock_bh(&c->tcf_lock);
|
||||||
goto_ch = tcf_action_set_ctrlact(*a, parm->action, goto_ch);
|
goto_ch = tcf_action_set_ctrlact(*a, parm->action, goto_ch);
|
||||||
@@ -1308,6 +1308,9 @@ static int tcf_ct_init(struct net *net, struct nlattr *nla,
|
|||||||
|
|
||||||
return res;
|
return res;
|
||||||
|
|
||||||
|
cleanup_params:
|
||||||
|
if (params->tmpl)
|
||||||
|
nf_ct_put(params->tmpl);
|
||||||
cleanup:
|
cleanup:
|
||||||
if (goto_ch)
|
if (goto_ch)
|
||||||
tcf_chain_put_by_act(goto_ch);
|
tcf_chain_put_by_act(goto_ch);
|
||||||
|
Reference in New Issue
Block a user