The option driver (and presumably others) allocates several URBs when it opens and tries to free them when it closes. The isp1760_urb_dequeue function gets called, but the packet being dequeued is not necessarily at the front of one of the 32 queues. If not, the isp1760_urb_done function doesn't get called for the URB and the process trying to free it hangs forever on a wait_queue. This patch does two things. If the URB being dequeued has others queued behind it, it re-queues them. And it searches the queues looking for the URB being dequeued rather than just looking at the one at the front of the queue. [bigeasy@linutronix] whitespace fixes, reformating Cc: stable <stable@kernel.org> Signed-off-by: Warren Free <wfree@ipmn.com> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
||
|---|---|---|
| .. | ||
| whci | ||
| ehci-au1xxx.c | ||
| ehci-dbg.c | ||
| ehci-fsl.c | ||
| ehci-fsl.h | ||
| ehci-hcd.c | ||
| ehci-hub.c | ||
| ehci-ixp4xx.c | ||
| ehci-mem.c | ||
| ehci-orion.c | ||
| ehci-pci.c | ||
| ehci-ppc-of.c | ||
| ehci-ps3.c | ||
| ehci-q.c | ||
| ehci-sched.c | ||
| ehci.h | ||
| fhci-dbg.c | ||
| fhci-hcd.c | ||
| fhci-hub.c | ||
| fhci-mem.c | ||
| fhci-q.c | ||
| fhci-sched.c | ||
| fhci-tds.c | ||
| fhci.h | ||
| hwa-hc.c | ||
| isp116x-hcd.c | ||
| isp116x.h | ||
| isp1760-hcd.c | ||
| isp1760-hcd.h | ||
| isp1760-if.c | ||
| Kconfig | ||
| Makefile | ||
| ohci-at91.c | ||
| ohci-au1xxx.c | ||
| ohci-dbg.c | ||
| ohci-ep93xx.c | ||
| ohci-hcd.c | ||
| ohci-hub.c | ||
| ohci-lh7a404.c | ||
| ohci-mem.c | ||
| ohci-omap.c | ||
| ohci-pci.c | ||
| ohci-pnx4008.c | ||
| ohci-pnx8550.c | ||
| ohci-ppc-of.c | ||
| ohci-ppc-soc.c | ||
| ohci-ps3.c | ||
| ohci-pxa27x.c | ||
| ohci-q.c | ||
| ohci-s3c2410.c | ||
| ohci-sa1111.c | ||
| ohci-sh.c | ||
| ohci-sm501.c | ||
| ohci-ssb.c | ||
| ohci-tmio.c | ||
| ohci.h | ||
| oxu210hp-hcd.c | ||
| oxu210hp.h | ||
| pci-quirks.c | ||
| pci-quirks.h | ||
| r8a66597-hcd.c | ||
| r8a66597.h | ||
| sl811-hcd.c | ||
| sl811.h | ||
| sl811_cs.c | ||
| u132-hcd.c | ||
| uhci-debug.c | ||
| uhci-hcd.c | ||
| uhci-hcd.h | ||
| uhci-hub.c | ||
| uhci-q.c | ||