net,rcu: convert call_rcu(inet6_ifa_finish_destroy_rcu) to kfree_rcu()
authorLai Jiangshan <laijs@cn.fujitsu.com>
Tue, 15 Mar 2011 10:00:14 +0000 (18:00 +0800)
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Sun, 8 May 2011 05:50:50 +0000 (22:50 -0700)
The rcu callback inet6_ifa_finish_destroy_rcu() just calls a kfree(),
so we use kfree_rcu() instead of the call_rcu(inet6_ifa_finish_destroy_rcu).

Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
Acked-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Reviewed-by: Josh Triplett <josh@joshtriplett.org>
net/ipv6/addrconf.c

index c406f564b7726eca3707f9c4767c5921a9595018..8f13d88d7dba489739f60c8a64ec6df22ce59d6e 100644 (file)
@@ -529,12 +529,6 @@ static int addrconf_fixup_forwarding(struct ctl_table *table, int *p, int old)
 }
 #endif
 
-static void inet6_ifa_finish_destroy_rcu(struct rcu_head *head)
-{
-       struct inet6_ifaddr *ifp = container_of(head, struct inet6_ifaddr, rcu);
-       kfree(ifp);
-}
-
 /* Nobody refers to this ifaddr, destroy it */
 void inet6_ifa_finish_destroy(struct inet6_ifaddr *ifp)
 {
@@ -555,7 +549,7 @@ void inet6_ifa_finish_destroy(struct inet6_ifaddr *ifp)
        }
        dst_release(&ifp->rt->dst);
 
-       call_rcu(&ifp->rcu, inet6_ifa_finish_destroy_rcu);
+       kfree_rcu(ifp, rcu);
 }
 
 static void