Message ID | 20241013201704.49576-16-Julia.Lawall@inria.fr (mailing list archive) |
---|---|
State | Not Applicable |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | replace call_rcu by kfree_rcu for simple kmem_cache_free callback | expand |
On Sun, Oct 13, 2024 at 10:17:02PM +0200, Julia Lawall wrote: > Since SLOB was removed and since > commit 6c6c47b063b5 ("mm, slab: call kvfree_rcu_barrier() from kmem_cache_destroy()"), > it is not necessary to use call_rcu when the callback only performs > kmem_cache_free. Use kfree_rcu() directly. > > The changes were made using Coccinelle. > > Signed-off-by: Julia Lawall <Julia.Lawall@inria.fr> > > --- > net/netfilter/nf_conncount.c | 10 +--------- > 1 file changed, 1 insertion(+), 9 deletions(-) > > diff --git a/net/netfilter/nf_conncount.c b/net/netfilter/nf_conncount.c > index 4890af4dc263..6a7a6c2d6ebc 100644 > --- a/net/netfilter/nf_conncount.c > +++ b/net/netfilter/nf_conncount.c > @@ -275,14 +275,6 @@ bool nf_conncount_gc_list(struct net *net, > } > EXPORT_SYMBOL_GPL(nf_conncount_gc_list); > > -static void __tree_nodes_free(struct rcu_head *h) > -{ > - struct nf_conncount_rb *rbconn; > - > - rbconn = container_of(h, struct nf_conncount_rb, rcu_head); > - kmem_cache_free(conncount_rb_cachep, rbconn); > -} > - > /* caller must hold tree nf_conncount_locks[] lock */ > static void tree_nodes_free(struct rb_root *root, > struct nf_conncount_rb *gc_nodes[], > @@ -295,7 +287,7 @@ static void tree_nodes_free(struct rb_root *root, > spin_lock(&rbconn->list.list_lock); > if (!rbconn->list.count) { > rb_erase(&rbconn->node, root); > - call_rcu(&rbconn->rcu_head, __tree_nodes_free); > + kfree_rcu(rbconn, rcu_head); > } > spin_unlock(&rbconn->list.list_lock); > } > > Reviewed-by: Uladzislau Rezki (Sony) <urezki@gmail.com> -- Uladzislau Rezki
diff --git a/net/netfilter/nf_conncount.c b/net/netfilter/nf_conncount.c index 4890af4dc263..6a7a6c2d6ebc 100644 --- a/net/netfilter/nf_conncount.c +++ b/net/netfilter/nf_conncount.c @@ -275,14 +275,6 @@ bool nf_conncount_gc_list(struct net *net, } EXPORT_SYMBOL_GPL(nf_conncount_gc_list); -static void __tree_nodes_free(struct rcu_head *h) -{ - struct nf_conncount_rb *rbconn; - - rbconn = container_of(h, struct nf_conncount_rb, rcu_head); - kmem_cache_free(conncount_rb_cachep, rbconn); -} - /* caller must hold tree nf_conncount_locks[] lock */ static void tree_nodes_free(struct rb_root *root, struct nf_conncount_rb *gc_nodes[], @@ -295,7 +287,7 @@ static void tree_nodes_free(struct rb_root *root, spin_lock(&rbconn->list.list_lock); if (!rbconn->list.count) { rb_erase(&rbconn->node, root); - call_rcu(&rbconn->rcu_head, __tree_nodes_free); + kfree_rcu(rbconn, rcu_head); } spin_unlock(&rbconn->list.list_lock); }
Since SLOB was removed and since commit 6c6c47b063b5 ("mm, slab: call kvfree_rcu_barrier() from kmem_cache_destroy()"), it is not necessary to use call_rcu when the callback only performs kmem_cache_free. Use kfree_rcu() directly. The changes were made using Coccinelle. Signed-off-by: Julia Lawall <Julia.Lawall@inria.fr> --- net/netfilter/nf_conncount.c | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-)