diff options
author | Bjørn Mork <bjorn@mork.no> | 2013-12-20 13:07:24 (GMT) |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2013-12-20 20:06:46 (GMT) |
commit | 8dd5cd5395b90070d98149d0a94e5981a74cd2ec (patch) | |
tree | e4c61bc41c7b2c580fedc55056cfa74939500958 /arch/mips/math-emu | |
parent | bee53637e5836a7cc642ca036e44bd77caf7bc35 (diff) | |
download | linux-8dd5cd5395b90070d98149d0a94e5981a74cd2ec.tar.xz |
usb: cdc-wdm: avoid hanging on zero length reads
commit 73e06865ead1 ("USB: cdc-wdm: support back-to-back
USB_CDC_NOTIFY_RESPONSE_AVAILABLE notifications") implemented
queued response handling. This added a new requirement: The read
urb must be resubmitted every time we clear the WDM_READ flag if
the response counter indicates that the device is waiting for a
read.
Fix by factoring out the code handling the WMD_READ clearing and
possible urb submission, calling it everywhere we clear the flag.
Without this fix, the driver ends up in a state where the read urb
is inactive, but the response counter is positive after a zero
length read. This prevents the read urb from ever being submitted
again and the driver appears to be hanging.
Fixes: 73e06865ead1 ("USB: cdc-wdm: support back-to-back USB_CDC_NOTIFY_RESPONSE_AVAILABLE notifications")
Cc: Greg Suarez <gsuarez@smithmicro.com>
Signed-off-by: Bjørn Mork <bjorn@mork.no>
Cc: stable <stable@vger.kernel.org> # 3.13
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'arch/mips/math-emu')
0 files changed, 0 insertions, 0 deletions