From: Bjørn Mork Date: Fri, 20 Dec 2013 13:07:24 +0000 (+0100) Subject: usb: cdc-wdm: avoid hanging on zero length reads X-Git-Tag: v3.14-rc1~148^2~100 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8dd5cd5395b90070d98149d0a94e5981a74cd2ec;p=pandora-kernel.git 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 Signed-off-by: Bjørn Mork Cc: stable # 3.13 Signed-off-by: Greg Kroah-Hartman --- Reading git-diff-tree failed