diff options
Diffstat (limited to 'net/openvswitch/vport-netdev.c')
| -rw-r--r-- | net/openvswitch/vport-netdev.c | 9 | 
1 files changed, 4 insertions, 5 deletions
| diff --git a/net/openvswitch/vport-netdev.c b/net/openvswitch/vport-netdev.c index 8e1a88f13622..b498dac4e1e0 100644 --- a/net/openvswitch/vport-netdev.c +++ b/net/openvswitch/vport-netdev.c @@ -82,7 +82,7 @@ struct vport *ovs_netdev_link(struct vport *vport, const char *name)  		err = -ENODEV;  		goto error_free_vport;  	} - +	netdev_tracker_alloc(vport->dev, &vport->dev_tracker, GFP_KERNEL);  	if (vport->dev->flags & IFF_LOOPBACK ||  	    (vport->dev->type != ARPHRD_ETHER &&  	     vport->dev->type != ARPHRD_NONE) || @@ -115,7 +115,7 @@ error_master_upper_dev_unlink:  error_unlock:  	rtnl_unlock();  error_put: -	dev_put(vport->dev); +	dev_put_track(vport->dev, &vport->dev_tracker);  error_free_vport:  	ovs_vport_free(vport);  	return ERR_PTR(err); @@ -137,8 +137,7 @@ static void vport_netdev_free(struct rcu_head *rcu)  {  	struct vport *vport = container_of(rcu, struct vport, rcu); -	if (vport->dev) -		dev_put(vport->dev); +	dev_put_track(vport->dev, &vport->dev_tracker);  	ovs_vport_free(vport);  } @@ -174,7 +173,7 @@ void ovs_netdev_tunnel_destroy(struct vport *vport)  	 */  	if (vport->dev->reg_state == NETREG_REGISTERED)  		rtnl_delete_link(vport->dev); -	dev_put(vport->dev); +	dev_put_track(vport->dev, &vport->dev_tracker);  	vport->dev = NULL;  	rtnl_unlock(); |