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

Commit fba594a8 authored by Peter Hurley's avatar Peter Hurley Committed by Greg Kroah-Hartman
Browse files

serial: core: Remove unsafe x_char optimization



uart_unthrottle() attempts to avoid sending START and the previous
x_char if the previous x_char has not yet been sent. However, this
optimization could leave the sender in a throttled state; for example,
if the sender is throttled and this unthrottle coincides with a manual
tcflow(TCION) from user-space, then neither START would be sent.

Signed-off-by: default avatarPeter Hurley <peter@hurleysoftware.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent c235ccc1
Loading
Loading
Loading
Loading
+2 −6
Original line number Diff line number Diff line
@@ -647,12 +647,8 @@ static void uart_unthrottle(struct tty_struct *tty)
		mask &= ~port->flags;
	}

	if (mask & UPF_SOFT_FLOW) {
		if (port->x_char)
			port->x_char = 0;
		else
	if (mask & UPF_SOFT_FLOW)
		uart_send_xchar(tty, START_CHAR(tty));
	}

	if (mask & UPF_HARD_FLOW)
		uart_set_mctrl(port, TIOCM_RTS);