FAILED: patch "[PATCH] serial: 8250: Flush DMA Rx on RLSI" failed to apply to 4.9-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 4.9-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
Possible dependencies:
1980860e0c82 ("serial: 8250: Flush DMA Rx on RLSI")a931237cbea2 ("serial: 8250: Fall back to non-DMA Rx if IIR_RDI occurs") df561f6688fe ("treewide: Use fallthrough pseudo-keyword")37711e5e2325 ("Merge tag 'nfs-for-5.9-1' of git://git.linux-nfs.org/projects/trondmy/linux-nfs")
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 1980860e0c8299316cddaf0992dd9e1258ec9d88 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= <[email protected]>
Date: Tue, 8 Nov 2022 14:19:52 +0200
Subject: [PATCH] serial: 8250: Flush DMA Rx on RLSI
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Returning true from handle_rx_dma() without flushing DMA first creates a data ordering hazard. If DMA Rx has handled any character at the point when RLSI occurs, the non-DMA path handles any pending characters jumping them ahead of those characters that are pending under DMA.
drivers/tty/serial/8250/8250_port.c +1 -2
@@ -1901,10 +1901,9 @@ static bool handle_rx_dma(struct uart_8250_port *up, unsigned int iir)if (!up->dma->rx_running)break ; fallthrough; +case UART_IIR_RLSI :case UART_IIR_RX_TIMEOUT :serial8250_rx_dma_flush (up); - fallthrough; -case UART_IIR_RLSI :return true; }return up->dma->rx_dma (up);