diff options
author | Xenia Ragiadakou <burzalodowa@gmail.com> | 2013-09-04 17:24:45 +0300 |
---|---|---|
committer | Sarah Sharp <sarah.a.sharp@linux.intel.com> | 2013-09-23 15:43:32 -0700 |
commit | 38d7f6885164b114fdfae84bc18397e8fced9b00 (patch) | |
tree | 35645e216dc920570fe00cbc36cb60a7f332a5a2 | |
parent | 526867c3ca0caa2e3e846cb993b0f961c33c2abb (diff) | |
download | linux-38d7f6885164b114fdfae84bc18397e8fced9b00.tar.gz linux-38d7f6885164b114fdfae84bc18397e8fced9b00.tar.bz2 linux-38d7f6885164b114fdfae84bc18397e8fced9b00.zip |
usbcore: check usb device's state before sending a Set SEL control transfer
Set SEL control urbs cannot be sent to a device in unconfigured state.
This patch adds a check in usb_req_set_sel() to ensure the usb device's
state is USB_STATE_CONFIGURED.
Signed-off-by: Xenia Ragiadakou <burzalodowa@gmail.com>
Reported-by: Martin MOKREJS <mmokrejs@gmail.com>
Suggested-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
-rw-r--r-- | drivers/usb/core/hub.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c index dde4c83516a1..e6b682c6c236 100644 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c @@ -3426,6 +3426,9 @@ static int usb_req_set_sel(struct usb_device *udev, enum usb3_link_state state) unsigned long long u2_pel; int ret; + if (udev->state != USB_STATE_CONFIGURED) + return 0; + /* Convert SEL and PEL stored in ns to us */ u1_sel = DIV_ROUND_UP(udev->u1_params.sel, 1000); u1_pel = DIV_ROUND_UP(udev->u1_params.pel, 1000); |