summaryrefslogtreecommitdiffstats
path: root/drivers/net/usb/hso.c
diff options
context:
space:
mode:
authorOliver Neukum2008-12-18 04:57:35 +0100
committerDavid S. Miller2008-12-23 04:54:00 +0100
commit889bd9b6dbcd426b8698c4a779dd7dbf247f57b8 (patch)
tree595b94f2691726925304887ca88fd775f46d759e /drivers/net/usb/hso.c
parentpkt_sched: Remove smp_wmb() in qdisc_watchdog() (diff)
downloadkernel-qcow2-linux-889bd9b6dbcd426b8698c4a779dd7dbf247f57b8.tar.gz
kernel-qcow2-linux-889bd9b6dbcd426b8698c4a779dd7dbf247f57b8.tar.xz
kernel-qcow2-linux-889bd9b6dbcd426b8698c4a779dd7dbf247f57b8.zip
net: startup race in hso driver
The flag marking a device running must be set before the URBs for recption are submitted or they may complete too early and fail to resubmit. Signed-off-by: Oliver Neukum <oneukum@suse.de> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/usb/hso.c')
-rw-r--r--drivers/net/usb/hso.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/drivers/net/usb/hso.c b/drivers/net/usb/hso.c
index c5c1aeae94fe..198ce3cf378a 100644
--- a/drivers/net/usb/hso.c
+++ b/drivers/net/usb/hso.c
@@ -663,10 +663,9 @@ static int hso_net_open(struct net_device *net)
odev->rx_buf_missing = sizeof(struct iphdr);
spin_unlock_irqrestore(&odev->net_lock, flags);
- hso_start_net_device(odev->parent);
-
/* We are up and running. */
set_bit(HSO_NET_RUNNING, &odev->flags);
+ hso_start_net_device(odev->parent);
/* Tell the kernel we are ready to start receiving from it */
netif_start_queue(net);