Commit 56c14fb4 authored by Vincent Whitchurch's avatar Vincent Whitchurch Committed by Greg Kroah-Hartman
Browse files

tty: Fix lookahead_buf crash with serdev



Do not follow a NULL pointer if the tty_port_client_operations does not
implement the ->lookahead_buf() callback, which is the case with
serdev's ttyport.

Reported-by: default avatarHans de Goede <hdegoede@redhat.com>
Fixes: 6bb6fa69 ("tty: Implement lookahead to process XON/XOFF timely")
Reviewed-by: default avatarIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: default avatarVincent Whitchurch <vincent.whitchurch@axis.com>
Link: https://lore.kernel.org/r/20220818115026.2237893-1-vincent.whitchurch@axis.com


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 846651ec
Loading
Loading
Loading
Loading
+9 −5
Original line number Diff line number Diff line
@@ -470,7 +470,6 @@ static void lookahead_bufs(struct tty_port *port, struct tty_buffer *head)

	while (head) {
		struct tty_buffer *next;
		unsigned char *p, *f = NULL;
		unsigned int count;

		/*
@@ -489,11 +488,16 @@ static void lookahead_bufs(struct tty_port *port, struct tty_buffer *head)
			continue;
		}

		if (port->client_ops->lookahead_buf) {
			unsigned char *p, *f = NULL;

			p = char_buf_ptr(head, head->lookahead);
			if (~head->flags & TTYB_NORMAL)
				f = flag_buf_ptr(head, head->lookahead);

			port->client_ops->lookahead_buf(port, p, f, count);
		}

		head->lookahead += count;
	}
}