Hi, On Thu, Jul 4, 2024 at 3:19 AM Johan Hovold <johan+linaro@xxxxxxxxxx> wrote: > > The Qualcomm GENI serial driver did not handle buffer flushing and used > to print discarded characters when the circular buffer was cleared. > Since commit 1788cf6a91d9 ("tty: serial: switch from circ_buf to kfifo") > this instead resulted in a hard lockup due to > qcom_geni_serial_send_chunk_fifo() spinning indefinitely in the > interrupt handler. > > The underlying bugs have now been fixed, but make sure to output NUL > characters instead of killing the machine if a similar driver bug is > ever reintroduced. > > Signed-off-by: Johan Hovold <johan+linaro@xxxxxxxxxx> > --- > drivers/tty/serial/qcom_geni_serial.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/tty/serial/qcom_geni_serial.c b/drivers/tty/serial/qcom_geni_serial.c > index b2bbd2d79dbb..69a632fefc41 100644 > --- a/drivers/tty/serial/qcom_geni_serial.c > +++ b/drivers/tty/serial/qcom_geni_serial.c > @@ -878,7 +878,7 @@ static void qcom_geni_serial_send_chunk_fifo(struct uart_port *uport, > memset(buf, 0, sizeof(buf)); > tx_bytes = min(remaining, BYTES_PER_FIFO_WORD); > > - tx_bytes = uart_fifo_out(uport, buf, tx_bytes); > + uart_fifo_out(uport, buf, tx_bytes); FWIW I would have rather we output something much more obviously wrong in this case instead of a NUL byte. Maybe we should fill it with "@" characters or something? As you said: the driver shouldn't get into this error condition so it shouldn't matter, but if we have a bug in the future I'd rather it be an obvious bug instead of a subtle bug. I'm happy to post a patch or provide a Reviewed-by if you want to post a patch. Let me know. -Doug