mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-14 15:54:15 +08:00
tty: xilinx_uartps: Add timeout waiting for loop
There is a potential infinite loop while waiting for the the TXFULL to deassert. Adds the error message and timeout to avoid infinite loop if it fails to get the TX fifo not full. Signed-off-by: Shubhrajyoti Datta <shubhrajyoti.datta@xilinx.com> Link: https://lore.kernel.org/r/20220729114748.18332-7-shubhrajyoti.datta@xilinx.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
b36962896f
commit
a17fa1216c
@ -1147,8 +1147,20 @@ static void cdns_uart_console_putchar(struct uart_port *port, unsigned char ch)
|
||||
}
|
||||
cpu_relax();
|
||||
}
|
||||
while (readl(port->membase + CDNS_UART_SR) & CDNS_UART_SR_TXFULL)
|
||||
|
||||
timeout = jiffies + msecs_to_jiffies(1000);
|
||||
while (1) {
|
||||
ctrl_reg = readl(port->membase + CDNS_UART_SR);
|
||||
|
||||
if (!(ctrl_reg & CDNS_UART_SR_TXFULL))
|
||||
break;
|
||||
if (time_after(jiffies, timeout)) {
|
||||
dev_warn(port->dev,
|
||||
"timeout waiting for TX fifo\n");
|
||||
return;
|
||||
}
|
||||
cpu_relax();
|
||||
}
|
||||
writel(ch, port->membase + CDNS_UART_FIFO);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user