diff mbox series

[net] net/sched: act_ct: Fix leak of ct zone template on replace

Message ID 1584528633-20177-1-git-send-email-paulb@mellanox.com
State Accepted
Delegated to: David Miller
Headers show
Series [net] net/sched: act_ct: Fix leak of ct zone template on replace | expand

Commit Message

Paul Blakey March 18, 2020, 10:50 a.m. UTC
Currently, on replace, the previous action instance params
is swapped with a newly allocated params. The old params is
only freed (via kfree_rcu), without releasing the allocated
ct zone template related to it.

Call tcf_ct_params_free (via call_rcu) for the old params,
so it will release it.

Fixes: b57dc7c13ea9 ("net/sched: Introduce action ct")
Signed-off-by: Paul Blakey <paulb@mellanox.com>
---
 net/sched/act_ct.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

David Miller March 18, 2020, 11:38 p.m. UTC | #1
From: Paul Blakey <paulb@mellanox.com>
Date: Wed, 18 Mar 2020 12:50:33 +0200

> Currently, on replace, the previous action instance params
> is swapped with a newly allocated params. The old params is
> only freed (via kfree_rcu), without releasing the allocated
> ct zone template related to it.
> 
> Call tcf_ct_params_free (via call_rcu) for the old params,
> so it will release it.
> 
> Fixes: b57dc7c13ea9 ("net/sched: Introduce action ct")
> Signed-off-by: Paul Blakey <paulb@mellanox.com>

Applied and queued up for -stable.
diff mbox series

Patch

diff --git a/net/sched/act_ct.c b/net/sched/act_ct.c
index f685c0d..41114b4 100644
--- a/net/sched/act_ct.c
+++ b/net/sched/act_ct.c
@@ -739,7 +739,7 @@  static int tcf_ct_init(struct net *net, struct nlattr *nla,
 	if (goto_ch)
 		tcf_chain_put_by_act(goto_ch);
 	if (params)
-		kfree_rcu(params, rcu);
+		call_rcu(&params->rcu, tcf_ct_params_free);
 	if (res == ACT_P_CREATED)
 		tcf_idr_insert(tn, *a);