greybus: es2: fix arpc active-list corruption
authorJohan Hovold <johan@hovoldconsulting.com>
Wed, 27 Jul 2016 14:37:22 +0000 (16:37 +0200)
committerGreg Kroah-Hartman <gregkh@google.com>
Thu, 28 Jul 2016 17:04:06 +0000 (10:04 -0700)
commitc0219cbf72418d5355e319a0d787dc2671df9d4f
tree1cf562fb2c94e9393a85fa94dd6b9a4b2628ce05
parent178457e171bf1ae7a90a6b0aa6a404fec129e8c4
greybus: es2: fix arpc active-list corruption

Fix ARPC active-list corruption due to incorrect list-interface usage.

The corruption manifested itself as ARPC timeouts due to expected
responses not being recognised whenever more than one ARPC was active.

This could be seen for example when two interfaces were being runtime
suspended in parallel:

[  165.739896] usb 1-1.1: invalid arpc response id received: 13
[  165.794743] greybus 1-5.5: gb_interface_refclk_set - 0
[  166.241202] usb 1-1.1: failed to execute ARPC: -110

Fortunately the impact of this bug has so far been limited to such
timeouts and error messages due to ARPC currently only being used for
CPort reset in the connection tear-down path.

Reported-by: Mark Greer <mgreer@animalcreek.com>
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
drivers/staging/greybus/es2.c