提交 6e070aec 编写于 作者: L Lai Jiangshan 提交者: Paul E. McKenney

macvlan,rcu: convert call_rcu(macvlan_port_rcu_free) to kfree_rcu()

The rcu callback macvlan_port_rcu_free() just calls a kfree(),
so we use kfree_rcu() instead of the call_rcu(macvlan_port_rcu_free).
Signed-off-by: NLai Jiangshan <laijs@cn.fujitsu.com>
Acked-by: NDavid S. Miller <davem@davemloft.net>
Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Reviewed-by: NJosh Triplett <josh@joshtriplett.org>
上级 bcec8b65
...@@ -603,21 +603,13 @@ static int macvlan_port_create(struct net_device *dev) ...@@ -603,21 +603,13 @@ static int macvlan_port_create(struct net_device *dev)
return err; return err;
} }
static void macvlan_port_rcu_free(struct rcu_head *head)
{
struct macvlan_port *port;
port = container_of(head, struct macvlan_port, rcu);
kfree(port);
}
static void macvlan_port_destroy(struct net_device *dev) static void macvlan_port_destroy(struct net_device *dev)
{ {
struct macvlan_port *port = macvlan_port_get(dev); struct macvlan_port *port = macvlan_port_get(dev);
dev->priv_flags &= ~IFF_MACVLAN_PORT; dev->priv_flags &= ~IFF_MACVLAN_PORT;
netdev_rx_handler_unregister(dev); netdev_rx_handler_unregister(dev);
call_rcu(&port->rcu, macvlan_port_rcu_free); kfree_rcu(port, rcu);
} }
static int macvlan_validate(struct nlattr *tb[], struct nlattr *data[]) static int macvlan_validate(struct nlattr *tb[], struct nlattr *data[])
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册