|
@@ -2005,7 +2005,10 @@ static void netback_changed(struct xenbus_device *dev,
|
|
|
case XenbusStateInitialised:
|
|
|
case XenbusStateReconfiguring:
|
|
|
case XenbusStateReconfigured:
|
|
|
+ break;
|
|
|
+
|
|
|
case XenbusStateUnknown:
|
|
|
+ wake_up_all(&module_unload_q);
|
|
|
break;
|
|
|
|
|
|
case XenbusStateInitWait:
|
|
@@ -2136,7 +2139,9 @@ static int xennet_remove(struct xenbus_device *dev)
|
|
|
xenbus_switch_state(dev, XenbusStateClosing);
|
|
|
wait_event(module_unload_q,
|
|
|
xenbus_read_driver_state(dev->otherend) ==
|
|
|
- XenbusStateClosing);
|
|
|
+ XenbusStateClosing ||
|
|
|
+ xenbus_read_driver_state(dev->otherend) ==
|
|
|
+ XenbusStateUnknown);
|
|
|
|
|
|
xenbus_switch_state(dev, XenbusStateClosed);
|
|
|
wait_event(module_unload_q,
|