From 1450f883a2b4cd4066ff4187e6aec04a363286fa Mon Sep 17 00:00:00 2001 From: Santosh Shilimkar Date: Thu, 8 Oct 2015 16:26:32 -0700 Subject: [PATCH] RDS: make use of kfree_rcu() and avoid the call_rcu() chain call_rcu() chains are expensive and its use in rds_ib_remove_ipaddr() is just to kfree() the rds_ib_ipaddr. Chains make use of high-latency rcu_barrier() in modules which can be avoided. Makes use of kfree_rcu() which is exactly meant for such use Orabug: 22010933 Acked-by: Ajaykumar Hotchandani Acked-by: Wengang Wang Signed-off-by: Santosh Shilimkar --- net/rds/ib_rdma.c | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/net/rds/ib_rdma.c b/net/rds/ib_rdma.c index 751fe3d9ebf0..105a4e8a629d 100644 --- a/net/rds/ib_rdma.c +++ b/net/rds/ib_rdma.c @@ -136,12 +136,6 @@ static int rds_ib_add_ipaddr(struct rds_ib_device *rds_ibdev, __be32 ipaddr) return 0; } -static void ipaddr_free_cb(struct rcu_head *rp) -{ - struct rds_ib_ipaddr *ipaddr = container_of(rp, struct rds_ib_ipaddr, rcu_head); - kfree(ipaddr); -} - static void rds_ib_remove_ipaddr(struct rds_ib_device *rds_ibdev, __be32 ipaddr) { struct rds_ib_ipaddr *i_ipaddr; @@ -159,7 +153,7 @@ static void rds_ib_remove_ipaddr(struct rds_ib_device *rds_ibdev, __be32 ipaddr) spin_unlock_irq(&rds_ibdev->spinlock); if (to_free) - call_rcu(&to_free->rcu_head, ipaddr_free_cb); + kfree_rcu(to_free, rcu_head); } int rds_ib_update_ipaddr(struct rds_ib_device *rds_ibdev, __be32 ipaddr) -- 2.50.1