mirror of
https://github.com/torvalds/linux.git
synced 2024-11-23 12:42:02 +00:00
USB: ehci: handle large bulk URBs correctly (again)
USB: ehci: Fixes completion for multi-qtd URB the short read case
When use of urb->status in the EHCI driver was reworked last August
(commit 14c04c0f88
), a bug was inserted
in the handling of early completion for bulk transactions that need
more than one qTD (e.g. more than 20KB in one URB).
This patch resolves that problem by ensuring that the early completion
status is preserved until the URB is handed back to its submitter,
instead of resetting it after each qTD.
Signed-off-by: Misha Zhilin <misha@epiphan.com>
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Alan Stern <stern@rowland.harvard.edu>
Cc: stable@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
14f3546f32
commit
b5f7a0ec11
@ -319,10 +319,10 @@ qh_completions (struct ehci_hcd *ehci, struct ehci_qh *qh)
|
||||
if (likely (last->urb != urb)) {
|
||||
ehci_urb_done(ehci, last->urb, last_status);
|
||||
count++;
|
||||
last_status = -EINPROGRESS;
|
||||
}
|
||||
ehci_qtd_free (ehci, last);
|
||||
last = NULL;
|
||||
last_status = -EINPROGRESS;
|
||||
}
|
||||
|
||||
/* ignore urbs submitted during completions we reported */
|
||||
|
Loading…
Reference in New Issue
Block a user