Message ID | 20241013201704.49576-9-Julia.Lawall@inria.fr (mailing list archive) |
---|---|
State | Accepted |
Commit | 4ac64e570c337cfbff80f16334b10901168107eb |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | replace call_rcu by kfree_rcu for simple kmem_cache_free callback | expand |
On 13/10/2024 23:16, 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/bridge/br_fdb.c | 9 +-------- > 1 file changed, 1 insertion(+), 8 deletions(-) > > diff --git a/net/bridge/br_fdb.c b/net/bridge/br_fdb.c > index 642b8ccaae8e..1cd7bade9b3b 100644 > --- a/net/bridge/br_fdb.c > +++ b/net/bridge/br_fdb.c > @@ -73,13 +73,6 @@ static inline int has_expired(const struct net_bridge *br, > time_before_eq(fdb->updated + hold_time(br), jiffies); > } > > -static void fdb_rcu_free(struct rcu_head *head) > -{ > - struct net_bridge_fdb_entry *ent > - = container_of(head, struct net_bridge_fdb_entry, rcu); > - kmem_cache_free(br_fdb_cache, ent); > -} > - > static int fdb_to_nud(const struct net_bridge *br, > const struct net_bridge_fdb_entry *fdb) > { > @@ -329,7 +322,7 @@ static void fdb_delete(struct net_bridge *br, struct net_bridge_fdb_entry *f, > if (test_and_clear_bit(BR_FDB_DYNAMIC_LEARNED, &f->flags)) > atomic_dec(&br->fdb_n_learned); > fdb_notify(br, f, RTM_DELNEIGH, swdev_notify); > - call_rcu(&f->rcu, fdb_rcu_free); > + kfree_rcu(f, rcu); > } > > /* Delete a local entry if no other port had the same address. > Acked-by: Nikolay Aleksandrov <razor@blackwall.org>
On Sun, Oct 13, 2024 at 10:16:55PM +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/bridge/br_fdb.c | 9 +-------- > 1 file changed, 1 insertion(+), 8 deletions(-) > > diff --git a/net/bridge/br_fdb.c b/net/bridge/br_fdb.c > index 642b8ccaae8e..1cd7bade9b3b 100644 > --- a/net/bridge/br_fdb.c > +++ b/net/bridge/br_fdb.c > @@ -73,13 +73,6 @@ static inline int has_expired(const struct net_bridge *br, > time_before_eq(fdb->updated + hold_time(br), jiffies); > } > > -static void fdb_rcu_free(struct rcu_head *head) > -{ > - struct net_bridge_fdb_entry *ent > - = container_of(head, struct net_bridge_fdb_entry, rcu); > - kmem_cache_free(br_fdb_cache, ent); > -} > - > static int fdb_to_nud(const struct net_bridge *br, > const struct net_bridge_fdb_entry *fdb) > { > @@ -329,7 +322,7 @@ static void fdb_delete(struct net_bridge *br, struct net_bridge_fdb_entry *f, > if (test_and_clear_bit(BR_FDB_DYNAMIC_LEARNED, &f->flags)) > atomic_dec(&br->fdb_n_learned); > fdb_notify(br, f, RTM_DELNEIGH, swdev_notify); > - call_rcu(&f->rcu, fdb_rcu_free); > + kfree_rcu(f, rcu); > } > > /* Delete a local entry if no other port had the same address. > > Reviewed-by: Uladzislau Rezki (Sony) <urezki@gmail.com> -- Uladzislau Rezki
diff --git a/net/bridge/br_fdb.c b/net/bridge/br_fdb.c index 642b8ccaae8e..1cd7bade9b3b 100644 --- a/net/bridge/br_fdb.c +++ b/net/bridge/br_fdb.c @@ -73,13 +73,6 @@ static inline int has_expired(const struct net_bridge *br, time_before_eq(fdb->updated + hold_time(br), jiffies); } -static void fdb_rcu_free(struct rcu_head *head) -{ - struct net_bridge_fdb_entry *ent - = container_of(head, struct net_bridge_fdb_entry, rcu); - kmem_cache_free(br_fdb_cache, ent); -} - static int fdb_to_nud(const struct net_bridge *br, const struct net_bridge_fdb_entry *fdb) { @@ -329,7 +322,7 @@ static void fdb_delete(struct net_bridge *br, struct net_bridge_fdb_entry *f, if (test_and_clear_bit(BR_FDB_DYNAMIC_LEARNED, &f->flags)) atomic_dec(&br->fdb_n_learned); fdb_notify(br, f, RTM_DELNEIGH, swdev_notify); - call_rcu(&f->rcu, fdb_rcu_free); + kfree_rcu(f, rcu); } /* Delete a local entry if no other port had the same address.
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/bridge/br_fdb.c | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-)