aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/host/xhci.c
diff options
context:
space:
mode:
authorIngo Molnar <[email protected]>2015-01-28 14:30:32 +0000
committerIngo Molnar <[email protected]>2015-01-28 14:30:32 +0000
commit41ca5d4e9be11ea6ae040b51d9628a189fd82896 (patch)
treef9c35cc37b9622f6cccd91b94548f44b9a534029 /drivers/usb/host/xhci.c
parentx86_64 entry: Fix RCX for ptraced syscalls (diff)
parentx86, tls: Interpret an all-zero struct user_desc as "no segment" (diff)
downloadkernel-41ca5d4e9be11ea6ae040b51d9628a189fd82896.tar.gz
kernel-41ca5d4e9be11ea6ae040b51d9628a189fd82896.zip
Merge commit 3669ef9fa7d3 ("x86, tls: Interpret an all-zero struct user_desc as 'no segment'") into x86/asm
Pick up the latestest asm fixes before advancing it any further. Signed-off-by: Ingo Molnar <[email protected]>
Diffstat (limited to 'drivers/usb/host/xhci.c')
-rw-r--r--drivers/usb/host/xhci.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
index 01fcbb5eb06e..c50d8d202618 100644
--- a/drivers/usb/host/xhci.c
+++ b/drivers/usb/host/xhci.c
@@ -3803,6 +3803,15 @@ static int xhci_setup_device(struct usb_hcd *hcd, struct usb_device *udev,
return -EINVAL;
}
+ if (setup == SETUP_CONTEXT_ONLY) {
+ slot_ctx = xhci_get_slot_ctx(xhci, virt_dev->out_ctx);
+ if (GET_SLOT_STATE(le32_to_cpu(slot_ctx->dev_state)) ==
+ SLOT_STATE_DEFAULT) {
+ xhci_dbg(xhci, "Slot already in default state\n");
+ return 0;
+ }
+ }
+
command = xhci_alloc_command(xhci, false, false, GFP_KERNEL);
if (!command)
return -ENOMEM;