diff options
Diffstat (limited to 'net/openvswitch/vport-internal_dev.c')
| -rw-r--r-- | net/openvswitch/vport-internal_dev.c | 11 | 
1 files changed, 4 insertions, 7 deletions
diff --git a/net/openvswitch/vport-internal_dev.c b/net/openvswitch/vport-internal_dev.c index 21c90d3a7ebf..58a7b8312c28 100644 --- a/net/openvswitch/vport-internal_dev.c +++ b/net/openvswitch/vport-internal_dev.c @@ -137,7 +137,7 @@ static void do_setup(struct net_device *netdev)  	netdev->priv_flags |= IFF_LIVE_ADDR_CHANGE | IFF_OPENVSWITCH |  			      IFF_NO_QUEUE;  	netdev->needs_free_netdev = true; -	netdev->priv_destructor = internal_dev_destructor; +	netdev->priv_destructor = NULL;  	netdev->ethtool_ops = &internal_dev_ethtool_ops;  	netdev->rtnl_link_ops = &internal_dev_link_ops; @@ -159,7 +159,6 @@ static struct vport *internal_dev_create(const struct vport_parms *parms)  	struct internal_dev *internal_dev;  	struct net_device *dev;  	int err; -	bool free_vport = true;  	vport = ovs_vport_alloc(0, &ovs_internal_vport_ops, parms);  	if (IS_ERR(vport)) { @@ -190,10 +189,9 @@ static struct vport *internal_dev_create(const struct vport_parms *parms)  	rtnl_lock();  	err = register_netdevice(vport->dev); -	if (err) { -		free_vport = false; +	if (err)  		goto error_unlock; -	} +	vport->dev->priv_destructor = internal_dev_destructor;  	dev_set_promiscuity(vport->dev, 1);  	rtnl_unlock(); @@ -207,8 +205,7 @@ error_unlock:  error_free_netdev:  	free_netdev(dev);  error_free_vport: -	if (free_vport) -		ovs_vport_free(vport); +	ovs_vport_free(vport);  error:  	return ERR_PTR(err);  }  |