ixgbe,rcu: convert call_rcu(ring_free_rcu) to kfree_rcu()
authorLai Jiangshan <laijs@cn.fujitsu.com>
Fri, 18 Mar 2011 03:57:21 +0000 (11:57 +0800)
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Sun, 8 May 2011 05:51:00 +0000 (22:51 -0700)
The rcu callback ring_free_rcu() just calls a kfree(),
so we use kfree_rcu() instead of the call_rcu(ring_free_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>
drivers/net/ixgbe/ixgbe_main.c

index 6f8adc7f5d7c123a5ed5b61d56622502eaf837b2..e145f2c455cb4733976e6c2b83456dbfdde2c5a3 100644 (file)
@@ -5100,11 +5100,6 @@ err_set_interrupt:
        return err;
 }
 
-static void ring_free_rcu(struct rcu_head *head)
-{
-       kfree(container_of(head, struct ixgbe_ring, rcu));
-}
-
 /**
  * ixgbe_clear_interrupt_scheme - Clear the current interrupt scheme settings
  * @adapter: board private structure to clear interrupt scheme on
@@ -5126,7 +5121,7 @@ void ixgbe_clear_interrupt_scheme(struct ixgbe_adapter *adapter)
                /* ixgbe_get_stats64() might access this ring, we must wait
                 * a grace period before freeing it.
                 */
-               call_rcu(&ring->rcu, ring_free_rcu);
+               kfree_rcu(ring, rcu);
                adapter->rx_ring[i] = NULL;
        }