xhci: Fix sleeping with IRQs disabled in xhci_stop_device()
xhci_stop_device() allocates and issues stop commands for each active endpoint. This is done with spinlock held and interrupt disabled so we can't sleep during memory allocation. Use GFP_NOWAIT instead Regression from commitddba5cd0ae
"xhci: Use command structures when queuing commands on the command ring" for 3.16-rc1 Fixes:ddba5cd0ae
("xhci: Use command structures when queuing commands") Reported-by: Dan Williams <dan.j.williams@intel.com> Reported-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
e3d9558082
commit
be3de32107
|
@ -287,7 +287,7 @@ static int xhci_stop_device(struct xhci_hcd *xhci, int slot_id, int suspend)
|
|||
if (virt_dev->eps[i].ring && virt_dev->eps[i].ring->dequeue) {
|
||||
struct xhci_command *command;
|
||||
command = xhci_alloc_command(xhci, false, false,
|
||||
GFP_NOIO);
|
||||
GFP_NOWAIT);
|
||||
if (!command) {
|
||||
spin_unlock_irqrestore(&xhci->lock, flags);
|
||||
xhci_free_command(xhci, cmd);
|
||||
|
|
Loading…
Reference in New Issue