| From ed797074031a37bb9bf4a70952fffc606b77274d Mon Sep 17 00:00:00 2001 |
| From: Johan Hovold <jhovold@gmail.com> |
| Date: Mon, 26 May 2014 19:23:40 +0200 |
| Subject: USB: cdc-acm: fix shutdown and suspend race |
| |
| From: Johan Hovold <jhovold@gmail.com> |
| |
| commit ed797074031a37bb9bf4a70952fffc606b77274d upstream. |
| |
| We should stop I/O unconditionally at suspend rather than rely on the |
| tty-port initialised flag (which is set prior to stopping I/O during |
| shutdown) in order to prevent suspend returning with URBs still active. |
| |
| Fixes: 11ea859d64b6 ("USB: additional power savings for cdc-acm devices |
| that support remote wakeup") |
| |
| Signed-off-by: Johan Hovold <jhovold@gmail.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/usb/class/cdc-acm.c | 3 +-- |
| 1 file changed, 1 insertion(+), 2 deletions(-) |
| |
| --- a/drivers/usb/class/cdc-acm.c |
| +++ b/drivers/usb/class/cdc-acm.c |
| @@ -1477,8 +1477,7 @@ static int acm_suspend(struct usb_interf |
| if (cnt) |
| return 0; |
| |
| - if (test_bit(ASYNCB_INITIALIZED, &acm->port.flags)) |
| - stop_data_traffic(acm); |
| + stop_data_traffic(acm); |
| |
| return 0; |
| } |