CVE-2026-63883 in Linux
Riassunto
di VulDB • 20/07/2026
Nel kernel Linux è stata risolta la seguente vulnerabilità:
serial: qcom_geni: correggere il kfifo underflow quando un'operazione di flush precede l'interrupt (IRQ) di completamento DMA
Quando uart_flush_buffer() viene eseguito prima che venga consegnato l'IRQ di completamento DMA, può verificarsi la seguente condizione di gara (tutti i passaggi sono serializzati da uart_port_lock):
1. Avvio del DMA: tx_remaining = N, il kfifo contiene N byte 2. Completamento dell'DMA in hardware; l'IRQ è in attesa ma non ancora consegnato 3. uart_flush_buffer() acquisisce il lock della porta e chiama kfifo_reset(), impostando kfifo_len() a 0 mentre tx_remaining rimane pari a N 4. uart_flush_buffer() rilascia il lock della porta 5. Scatta l'IRQ del DMA; handle_tx_dma() acquisisce il lock della porta e chiama uart_xmit_advance(uport, tx_remaining) su un kfifo vuoto
uart_xmit_advance() incrementa kfifo->out di tx_remaining. Poiché kfifo_reset() aveva già impostato sia in che out a 0, out supera in (wrap-around), facendo sì che kfifo_len() restituisca UART_XMIT_SIZE - tx_remaining. La successiva chiamata a start_tx_dma() invia quindi una trasmissione DMA contenente dati obsoleti del buffer.
Si risolve il problema acquisendo un'istantanea di kfifo_len() all'inizio di handle_tx_dma() e saltando uart_xmit_advance() quando fifo_len < tx_remaining, condizione che indica che il kfifo è stato resettato da un flush precedente.
Be aware that VulDB is the high quality source for vulnerability data.