]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
usb: gadget: u_serial: clear suspended flag when disconnecting
authorYoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Wed, 9 Sep 2020 00:01:32 +0000 (09:01 +0900)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 29 Oct 2020 09:07:48 +0000 (10:07 +0100)
[ Upstream commit d98ef43bfb65b5201e1afe36aaf8c4f9d71b4307 ]

The commit aba3a8d01d62 ("usb: gadget: u_serial: add suspend resume
callbacks") set/cleared the suspended flag in USB bus suspend/resume
only. But, when a USB cable is disconnected in the suspend, since some
controllers will not detect USB bus resume, the suspended flag is not
cleared. After that, user cannot send any data. To fix the issue,
clears the suspended flag in the gserial_disconnect().

Fixes: aba3a8d01d62 ("usb: gadget: u_serial: add suspend resume callbacks")
Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Tested-by: Linh Phung <linh.phung.jy@renesas.com>
Tested-by: Tam Nguyen <tam.nguyen.xa@renesas.com>
Signed-off-by: Felipe Balbi <balbi@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/usb/gadget/function/u_serial.c

index 3cfc6e2eba71a475eec8b81821069fd791e48c22..e0e3cb2f6f3bc94dcef2991e0e64546fc4700c4d 100644 (file)
@@ -1391,6 +1391,7 @@ void gserial_disconnect(struct gserial *gser)
                if (port->port.tty)
                        tty_hangup(port->port.tty);
        }
+       port->suspended = false;
        spin_unlock_irqrestore(&port->port_lock, flags);
 
        /* disable endpoints, aborting down any active I/O */