diff options
Diffstat (limited to 'drivers/usb/host/ehci-hub.c')
-rw-r--r-- | drivers/usb/host/ehci-hub.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/usb/host/ehci-hub.c b/drivers/usb/host/ehci-hub.c index 818647c33da8..6b5e4d18d4bf 100644 --- a/drivers/usb/host/ehci-hub.c +++ b/drivers/usb/host/ehci-hub.c | |||
@@ -855,6 +855,15 @@ static int ehci_hub_control ( | |||
855 | case SetPortFeature: | 855 | case SetPortFeature: |
856 | selector = wIndex >> 8; | 856 | selector = wIndex >> 8; |
857 | wIndex &= 0xff; | 857 | wIndex &= 0xff; |
858 | if (unlikely(ehci->debug)) { | ||
859 | /* If the debug port is active any port | ||
860 | * feature requests should get denied */ | ||
861 | if (wIndex == HCS_DEBUG_PORT(ehci->hcs_params) && | ||
862 | (readl(&ehci->debug->control) & DBGP_ENABLED)) { | ||
863 | retval = -ENODEV; | ||
864 | goto error_exit; | ||
865 | } | ||
866 | } | ||
858 | if (!wIndex || wIndex > ports) | 867 | if (!wIndex || wIndex > ports) |
859 | goto error; | 868 | goto error; |
860 | wIndex--; | 869 | wIndex--; |
@@ -951,6 +960,7 @@ error: | |||
951 | /* "stall" on error */ | 960 | /* "stall" on error */ |
952 | retval = -EPIPE; | 961 | retval = -EPIPE; |
953 | } | 962 | } |
963 | error_exit: | ||
954 | spin_unlock_irqrestore (&ehci->lock, flags); | 964 | spin_unlock_irqrestore (&ehci->lock, flags); |
955 | return retval; | 965 | return retval; |
956 | } | 966 | } |