Mayank Rana b3207c65df usb: xhci: Handle error condition in xhci_stop_device()
xhci_stop_device() calls xhci_queue_stop_endpoint() multiple times
without checking the return value. xhci_queue_stop_endpoint() can
return error if the HC is already halted or unable to queue commands.
This can cause a deadlock condition as xhci_stop_device() would
end up waiting indefinitely for a completion for the command that
didn't get queued. Fix this by checking the return value and bailing
out of xhci_stop_device() in case of error. This patch happens to fix
potential memory leaks of the allocated command structures as well.

Fixes: c311e391a7ef ("xhci: rework command timeout and cancellation,")
Cc: <stable@vger.kernel.org>
Signed-off-by: Mayank Rana <mrana@codeaurora.org>
Signed-off-by: Jack Pham <jackp@codeaurora.org>
Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2017-10-17 10:38:13 +02:00
..
2017-08-10 11:31:26 -07:00
2017-03-23 08:13:21 +01:00
2016-11-21 17:33:40 +01:00
2016-12-08 17:50:09 +01:00
2017-03-23 08:13:21 +01:00
2017-03-23 08:13:21 +01:00
2017-04-08 12:17:42 +02:00
2017-06-20 10:16:07 +08:00
2017-01-19 10:37:16 +01:00
2017-08-16 15:26:26 -07:00