diff options
| -rw-r--r-- | drivers/net/macvlan.c | 12 | 
1 files changed, 5 insertions, 7 deletions
| diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c index e03707de1eee..f4701da19a02 100644 --- a/drivers/net/macvlan.c +++ b/drivers/net/macvlan.c @@ -44,9 +44,10 @@ struct macvlan_port {  	struct sk_buff_head	bc_queue;  	struct work_struct	bc_work;  	bool 			passthru; -	int			count;  }; +#define MACVLAN_PORT_IS_EMPTY(port)    list_empty(&port->vlans) +  struct macvlan_skb_cb {  	const struct macvlan_dev *src;  }; @@ -628,8 +629,7 @@ static void macvlan_uninit(struct net_device *dev)  	free_percpu(vlan->pcpu_stats); -	port->count -= 1; -	if (!port->count) +	if (MACVLAN_PORT_IS_EMPTY(port))  		macvlan_port_destroy(port->dev);  } @@ -931,13 +931,12 @@ int macvlan_common_newlink(struct net *src_net, struct net_device *dev,  		vlan->flags = nla_get_u16(data[IFLA_MACVLAN_FLAGS]);  	if (vlan->mode == MACVLAN_MODE_PASSTHRU) { -		if (port->count) +		if (!MACVLAN_PORT_IS_EMPTY(port))  			return -EINVAL;  		port->passthru = true;  		eth_hw_addr_inherit(dev, lowerdev);  	} -	port->count += 1;  	err = register_netdevice(dev);  	if (err < 0)  		goto destroy_port; @@ -955,8 +954,7 @@ int macvlan_common_newlink(struct net *src_net, struct net_device *dev,  unregister_netdev:  	unregister_netdevice(dev);  destroy_port: -	port->count -= 1; -	if (!port->count) +	if (MACVLAN_PORT_IS_EMPTY(port))  		macvlan_port_destroy(lowerdev);  	return err; | 
