aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/xen-netfront.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/xen-netfront.c')
-rw-r--r--drivers/net/xen-netfront.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/net/xen-netfront.c b/drivers/net/xen-netfront.c
index 4d88aa394273..799cba4624a5 100644
--- a/drivers/net/xen-netfront.c
+++ b/drivers/net/xen-netfront.c
@@ -87,6 +87,7 @@ struct netfront_cb {
87/* IRQ name is queue name with "-tx" or "-rx" appended */ 87/* IRQ name is queue name with "-tx" or "-rx" appended */
88#define IRQ_NAME_SIZE (QUEUE_NAME_SIZE + 3) 88#define IRQ_NAME_SIZE (QUEUE_NAME_SIZE + 3)
89 89
90static DECLARE_WAIT_QUEUE_HEAD(module_load_q);
90static DECLARE_WAIT_QUEUE_HEAD(module_unload_q); 91static DECLARE_WAIT_QUEUE_HEAD(module_unload_q);
91 92
92struct netfront_stats { 93struct netfront_stats {
@@ -1331,6 +1332,11 @@ static struct net_device *xennet_create_dev(struct xenbus_device *dev)
1331 netif_carrier_off(netdev); 1332 netif_carrier_off(netdev);
1332 1333
1333 xenbus_switch_state(dev, XenbusStateInitialising); 1334 xenbus_switch_state(dev, XenbusStateInitialising);
1335 wait_event(module_load_q,
1336 xenbus_read_driver_state(dev->otherend) !=
1337 XenbusStateClosed &&
1338 xenbus_read_driver_state(dev->otherend) !=
1339 XenbusStateUnknown);
1334 return netdev; 1340 return netdev;
1335 1341
1336 exit: 1342 exit: