fix false disconnect due to a signal sent to the reading process
authorkeunyoung <keunyoung@google.com>
Wed, 29 Jan 2014 20:41:50 +0000 (12:41 -0800)
committerColin Cross <ccross@android.com>
Thu, 13 Feb 2014 20:31:34 +0000 (12:31 -0800)
commit6427820a87d082d8c35efedb0363bd3bf5469653
tree30bb6e4ca4338e4eddb65800332203d11f0de457
parent0d7892920bf7061cca287e0d7b5a23e344d5adfb
fix false disconnect due to a signal sent to the reading process

- In the current implementation, when a signal is sent to the reading process,
  read is cancelled by calling usb_ep_dequeue, which lead into calling
  acc_complete_out with ECONNRESET, but the current logic treats it as
  disconnection, which makes the device inaccessible until cable is actually
  disconnected.
- The fix calls disconnect only when ESHUTDOWN error is passed.
- If data has already arrived while trying cancelling, the data is marked
  as available, and it will be read out on the next read. This is necessary
  as USB bulk is assumed to guarantee no data loss.

Signed-off-by: keunyoung <keunyoung@google.com>
drivers/usb/gadget/f_accessory.c