USB: xhci: No GFP_KERNEL in block error handling
authorOliver Neukum <oliver@neukum.org>
Wed, 16 Dec 2009 18:43:59 +0000 (19:43 +0100)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 2 Mar 2010 22:53:19 +0000 (14:53 -0800)
xhci_add_endpoint() is used in the reset path. It must
use GFP_NOIO to avoid a possible deadlock.

Signed-off-by: Oliver Neukum <oliver@neukum.org>
Acked-by: Sarah Sharp <sarah.a.sharp@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/usb/host/xhci-hcd.c

index c8573f874ec4aa37d96f42e73da20a6886deae5e..4cb69e0af83442230fc13448a3e31f5b144ebe86 100644 (file)
@@ -1007,7 +1007,7 @@ int xhci_add_endpoint(struct usb_hcd *hcd, struct usb_device *udev,
         * for usb_set_interface() and usb_set_configuration() claim).
         */
        if (xhci_endpoint_init(xhci, xhci->devs[udev->slot_id],
-                               udev, ep, GFP_KERNEL) < 0) {
+                               udev, ep, GFP_NOIO) < 0) {
                dev_dbg(&udev->dev, "%s - could not initialize ep %#x\n",
                                __func__, ep->desc.bEndpointAddress);
                return -ENOMEM;