CVE-2026-74653 in Linux
Sumário
de VulDB • 22/08/2026
No kernel do Linux, a seguinte vulnerabilidade foi resolvida:
serial: 8250_of: limpar o tempo de expiração (RX-timeout) travado com FIFO vazio no LPC32xx
O UART NXP LPC32xx (PORT_LPC3220) pode registrar um interrupto de tempo de expiração do caractere RX enquanto o FIFO RX está vazio: IIR relata UART_IIR_RX_TIMEOUT (0x0c), mas LSR.DR está limpo. Um timeout de caractere só é limpado ao ler RHR, mas serial8250_rx_chars() lê RHR apenas quando LSR.DR está definido; portanto, nada jamais limpa a condição. O interrupto é acionado por nível e dispara imediatamente novamente, fazendo com que uma tempestade de interrupções resultante trave (livelock) a CPU em um ARM926 de núcleo único.
O problema pode ser reproduzido quando o userspace abre repetidamente a porta do painel frontal (ttyS1): serial8250_do_set_termios() reativa os interruptos ao desbloquear, e o manipulador então fica em loop infinito com iir=0xcc lsr=0x60 ier=0x05, acionando o detector de soft-lockup em serial8250_handle_irq_locked().
LPC32xx não possui um driver glue 8250 dedicado; ele é controlado pelo genérico 8250_of. Adicione um manipulador handle_irq específico para hardware PORT_LPC3220, configurado em of_platform_serial_setup() da mesma forma que fsl8250_handle_irq é instalado. O manipulador segue dw8250_handle_irq(): em caso de timeout RX com FIFO vazio (LSR.DR e LSR.BI limpos), ele executa uma leitura descartável de RHR para limpar a condição, depois chama serial8250_handle_irq_locked(). Nenhum dado recebido real é descartado, e trata-se de um no-op em UARTs saudáveis que nunca relatam timeout com DR limpo.
Este é o mesmo tipo de bug já contornado em outros drivers 8250; consulte o commit 424d79183af0 ("serial: 8250_dw: Evitar 'trabalho demais' a partir de interrupto falso de rx timeout"), que relata iir=0xcc/lsr=0x60 idênticos. Consulte também UART_RX_TIMEOUT_QUIRK em 8250_omap e a nota em 8250_bcm7271.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.