diff options
Diffstat (limited to 'drivers/net/xen-netback/xenbus.c')
| -rw-r--r-- | drivers/net/xen-netback/xenbus.c | 14 | 
1 files changed, 5 insertions, 9 deletions
| diff --git a/drivers/net/xen-netback/xenbus.c b/drivers/net/xen-netback/xenbus.c index d24b7a7993aa..990360d75cb6 100644 --- a/drivers/net/xen-netback/xenbus.c +++ b/drivers/net/xen-netback/xenbus.c @@ -256,6 +256,7 @@ static void backend_disconnect(struct backend_info *be)  		unsigned int queue_index;  		xen_unregister_watchers(vif); +		xenbus_rm(XBT_NIL, be->dev->nodename, "hotplug-status");  #ifdef CONFIG_DEBUG_FS  		xenvif_debugfs_delif(vif);  #endif /* CONFIG_DEBUG_FS */ @@ -675,7 +676,6 @@ static void hotplug_status_changed(struct xenbus_watch *watch,  		/* Not interested in this watch anymore. */  		unregister_hotplug_status_watch(be); -		xenbus_rm(XBT_NIL, be->dev->nodename, "hotplug-status");  	}  	kfree(str);  } @@ -824,15 +824,11 @@ static void connect(struct backend_info *be)  	xenvif_carrier_on(be->vif);  	unregister_hotplug_status_watch(be); -	if (xenbus_exists(XBT_NIL, dev->nodename, "hotplug-status")) { -		err = xenbus_watch_pathfmt(dev, &be->hotplug_status_watch, -					   NULL, hotplug_status_changed, -					   "%s/%s", dev->nodename, -					   "hotplug-status"); -		if (err) -			goto err; +	err = xenbus_watch_pathfmt(dev, &be->hotplug_status_watch, NULL, +				   hotplug_status_changed, +				   "%s/%s", dev->nodename, "hotplug-status"); +	if (!err)  		be->have_hotplug_status_watch = 1; -	}  	netif_tx_wake_all_queues(be->vif->dev); |