Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit eff6937a authored by Alan Cox's avatar Alan Cox Committed by Linus Torvalds
Browse files

tty: USB tty devices can block in tcdrain when unplugged



The underlying problem is that the device methods don't all correctly
handle disconnected status and some keep reporting bytes pending which
causes tcdrain to stall.

When the cable is unplugged they are definitely gone, and as this is true
for all USB cables we can fix it in the core usb serial code.

Signed-off-by: default avatarAlan Cox <alan@redhat.com>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 39aced68
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -339,6 +339,10 @@ static int serial_chars_in_buffer(struct tty_struct *tty)
	dbg("%s = port %d", __func__, port->number);

	WARN_ON(!port->port.count);
	/* if the device was unplugged then any remaining characters
	   fell out of the connector ;) */
	if (port->serial->disconnected)
		return 0;
	/* pass on to the driver specific version of this function */
	return port->serial->type->chars_in_buffer(tty);
}