• Warren Free's avatar
    USB: isp1760: urb_dequeue doesn't always find the urbs · 0afb20e0
    Warren Free authored
    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: default avatarWarren Free <wfree@ipmn.com>
    Signed-off-by: default avatarSebastian Andrzej Siewior <bigeasy@linutronix.de>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    0afb20e0
isp1760-hcd.c 55.4 KB