From: Ming Lei <ming.lei@canonical.com>
Date: Tue, 19 Jun 2012 21:15:51 +0000 (+0000)
Subject: usbnet: clear OPEN flag in failure path
X-Git-Tag: v3.5-rc5~17^2~24
X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=fb13c47b8e5ce707268bd38cfd082da377eac4b7;p=users%2Fdwmw2%2Flinux.git

usbnet: clear OPEN flag in failure path

Without clearing OPEN flag in failure path, runtime or system resume
may submit interrupt/rx URB and start tx queue mistakenly on a
interface in DOWN state.

Signed-off-by: Ming Lei <ming.lei@canonical.com>
Acked-by: Oliver Neukum <oneukum@suse.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
---

diff --git a/drivers/net/usb/usbnet.c b/drivers/net/usb/usbnet.c
index d4f7256a607da..815493caea7f5 100644
--- a/drivers/net/usb/usbnet.c
+++ b/drivers/net/usb/usbnet.c
@@ -796,11 +796,13 @@ int usbnet_open (struct net_device *net)
 	if (info->manage_power) {
 		retval = info->manage_power(dev, 1);
 		if (retval < 0)
-			goto done;
+			goto done_manage_power_error;
 		usb_autopm_put_interface(dev->intf);
 	}
 	return retval;
 
+done_manage_power_error:
+	clear_bit(EVENT_DEV_OPEN, &dev->flags);
 done:
 	usb_autopm_put_interface(dev->intf);
 done_nopm: