]> git.kernelconcepts.de Git - karo-tx-linux.git/commit
Revert "usb/uas: make sure data urb is gone if we receive status before that"
authorGerd Hoffmann <kraxel@redhat.com>
Tue, 19 Jun 2012 07:54:48 +0000 (09:54 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 25 Jun 2012 18:50:58 +0000 (11:50 -0700)
commitc621a81edecdee85da32c566c21836332c764fda
tree78bb018ee771516a8892b6f9b96103c37520aef8
parent889e5528cbe7dff2e91caf48f4bb23c17748b984
Revert "usb/uas: make sure data urb is gone if we receive status before that"

This reverts commit e4d8318a85779b25b880187b1b1c44e797bd7d4b.

This patch makes uas.c call usb_unlink_urb on data urbs.  The data urbs
get freed in the completion callback.  This is illegal according to the
usb_unlink_urb documentation.

This patch also makes the code expect the data completion callback
being called before the status completion callback.  This isn't
guaranteed to be the case, even though the actual data transfer should
be finished by the time the status is received.

Background:  The ehci irq handler for example only know that there are
finished transfers, it then has go check the QHs & TDs to see which
transfers did actually finish.  It has no way to figure in which order
the transfers did complete.  The xhci driver can call the callbacks in
completion order thanks to the event queue.  This does nicely explain
why the driver is solid on a (usb2) xhci port whereas it goes crazy on
ehci in my testing.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/storage/uas.c