diff options
-rw-r--r-- | drivers/usb/core/devio.c | 3 | ||||
-rw-r--r-- | drivers/usb/core/hub.c | 1 | ||||
-rw-r--r-- | drivers/usb/core/urb.c | 2 | ||||
-rw-r--r-- | drivers/usb/wusbcore/devconnect.c | 2 | ||||
-rw-r--r-- | drivers/usb/wusbcore/security.c | 2 | ||||
-rw-r--r-- | include/linux/usb/ch9.h | 2 |
6 files changed, 9 insertions, 3 deletions
diff --git a/drivers/usb/core/devio.c b/drivers/usb/core/devio.c index 6585f527e381..8f022af2fd7a 100644 --- a/drivers/usb/core/devio.c +++ b/drivers/usb/core/devio.c | |||
@@ -525,7 +525,8 @@ static int check_ctrlrecip(struct dev_state *ps, unsigned int requesttype, | |||
525 | { | 525 | { |
526 | int ret = 0; | 526 | int ret = 0; |
527 | 527 | ||
528 | if (ps->dev->state != USB_STATE_ADDRESS | 528 | if (ps->dev->state != USB_STATE_UNAUTHENTICATED |
529 | && ps->dev->state != USB_STATE_ADDRESS | ||
529 | && ps->dev->state != USB_STATE_CONFIGURED) | 530 | && ps->dev->state != USB_STATE_CONFIGURED) |
530 | return -EHOSTUNREACH; | 531 | return -EHOSTUNREACH; |
531 | if (USB_TYPE_VENDOR == (USB_TYPE_MASK & requesttype)) | 532 | if (USB_TYPE_VENDOR == (USB_TYPE_MASK & requesttype)) |
diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c index 7e33d63ab92f..f17d9ebc44af 100644 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c | |||
@@ -1305,6 +1305,7 @@ void usb_set_device_state(struct usb_device *udev, | |||
1305 | recursively_mark_NOTATTACHED(udev); | 1305 | recursively_mark_NOTATTACHED(udev); |
1306 | spin_unlock_irqrestore(&device_state_lock, flags); | 1306 | spin_unlock_irqrestore(&device_state_lock, flags); |
1307 | } | 1307 | } |
1308 | EXPORT_SYMBOL_GPL(usb_set_device_state); | ||
1308 | 1309 | ||
1309 | /* | 1310 | /* |
1310 | * WUSB devices are simple: they have no hubs behind, so the mapping | 1311 | * WUSB devices are simple: they have no hubs behind, so the mapping |
diff --git a/drivers/usb/core/urb.c b/drivers/usb/core/urb.c index 58bc5e3c2560..7025d801f23a 100644 --- a/drivers/usb/core/urb.c +++ b/drivers/usb/core/urb.c | |||
@@ -295,7 +295,7 @@ int usb_submit_urb(struct urb *urb, gfp_t mem_flags) | |||
295 | if (!urb || urb->hcpriv || !urb->complete) | 295 | if (!urb || urb->hcpriv || !urb->complete) |
296 | return -EINVAL; | 296 | return -EINVAL; |
297 | dev = urb->dev; | 297 | dev = urb->dev; |
298 | if ((!dev) || (dev->state < USB_STATE_DEFAULT)) | 298 | if ((!dev) || (dev->state < USB_STATE_UNAUTHENTICATED)) |
299 | return -ENODEV; | 299 | return -ENODEV; |
300 | 300 | ||
301 | /* For now, get the endpoint from the pipe. Eventually drivers | 301 | /* For now, get the endpoint from the pipe. Eventually drivers |
diff --git a/drivers/usb/wusbcore/devconnect.c b/drivers/usb/wusbcore/devconnect.c index 8e18141bb2e0..f0aac0cf315a 100644 --- a/drivers/usb/wusbcore/devconnect.c +++ b/drivers/usb/wusbcore/devconnect.c | |||
@@ -889,6 +889,8 @@ static void wusb_dev_add_ncb(struct usb_device *usb_dev) | |||
889 | if (usb_dev->wusb == 0 || usb_dev->devnum == 1) | 889 | if (usb_dev->wusb == 0 || usb_dev->devnum == 1) |
890 | return; /* skip non wusb and wusb RHs */ | 890 | return; /* skip non wusb and wusb RHs */ |
891 | 891 | ||
892 | usb_set_device_state(usb_dev, USB_STATE_UNAUTHENTICATED); | ||
893 | |||
892 | wusbhc = wusbhc_get_by_usb_dev(usb_dev); | 894 | wusbhc = wusbhc_get_by_usb_dev(usb_dev); |
893 | if (wusbhc == NULL) | 895 | if (wusbhc == NULL) |
894 | goto error_nodev; | 896 | goto error_nodev; |
diff --git a/drivers/usb/wusbcore/security.c b/drivers/usb/wusbcore/security.c index f4aa28eca70d..8118db7f1d8d 100644 --- a/drivers/usb/wusbcore/security.c +++ b/drivers/usb/wusbcore/security.c | |||
@@ -312,6 +312,7 @@ int wusb_dev_update_address(struct wusbhc *wusbhc, struct wusb_dev *wusb_dev) | |||
312 | result = wusb_set_dev_addr(wusbhc, wusb_dev, 0); | 312 | result = wusb_set_dev_addr(wusbhc, wusb_dev, 0); |
313 | if (result < 0) | 313 | if (result < 0) |
314 | goto error_addr0; | 314 | goto error_addr0; |
315 | usb_set_device_state(usb_dev, USB_STATE_DEFAULT); | ||
315 | usb_ep0_reinit(usb_dev); | 316 | usb_ep0_reinit(usb_dev); |
316 | 317 | ||
317 | /* Set new (authenticated) address. */ | 318 | /* Set new (authenticated) address. */ |
@@ -327,6 +328,7 @@ int wusb_dev_update_address(struct wusbhc *wusbhc, struct wusb_dev *wusb_dev) | |||
327 | result = wusb_set_dev_addr(wusbhc, wusb_dev, new_address); | 328 | result = wusb_set_dev_addr(wusbhc, wusb_dev, new_address); |
328 | if (result < 0) | 329 | if (result < 0) |
329 | goto error_addr; | 330 | goto error_addr; |
331 | usb_set_device_state(usb_dev, USB_STATE_ADDRESS); | ||
330 | usb_ep0_reinit(usb_dev); | 332 | usb_ep0_reinit(usb_dev); |
331 | usb_dev->authenticated = 1; | 333 | usb_dev->authenticated = 1; |
332 | error_addr: | 334 | error_addr: |
diff --git a/include/linux/usb/ch9.h b/include/linux/usb/ch9.h index fa777db7f7eb..d9d54803dbcb 100644 --- a/include/linux/usb/ch9.h +++ b/include/linux/usb/ch9.h | |||
@@ -763,8 +763,8 @@ enum usb_device_state { | |||
763 | /* chapter 9 and authentication (wireless) device states */ | 763 | /* chapter 9 and authentication (wireless) device states */ |
764 | USB_STATE_ATTACHED, | 764 | USB_STATE_ATTACHED, |
765 | USB_STATE_POWERED, /* wired */ | 765 | USB_STATE_POWERED, /* wired */ |
766 | USB_STATE_UNAUTHENTICATED, /* auth */ | ||
767 | USB_STATE_RECONNECTING, /* auth */ | 766 | USB_STATE_RECONNECTING, /* auth */ |
767 | USB_STATE_UNAUTHENTICATED, /* auth */ | ||
768 | USB_STATE_DEFAULT, /* limited function */ | 768 | USB_STATE_DEFAULT, /* limited function */ |
769 | USB_STATE_ADDRESS, | 769 | USB_STATE_ADDRESS, |
770 | USB_STATE_CONFIGURED, /* most functions */ | 770 | USB_STATE_CONFIGURED, /* most functions */ |