On Tue, Feb 07, 2023 at 11:47:16AM +0200, Ilpo Järvinen wrote: > [ Upstream commit 31352811e13dc2313f101b890fd4b1ce760b5fe7 ] > > __dma_rx_complete() is called from two places: > - Through the DMA completion callback dma_rx_complete() > - From serial8250_rx_dma_flush() after IIR_RLSI or IIR_RX_TIMEOUT > The former does not hold port's lock during __dma_rx_complete() which > allows these two to race and potentially insert the same data twice. > > Extend port's lock coverage in dma_rx_complete() to prevent the race > and check if the DMA Rx is still pending completion before calling > into __dma_rx_complete(). > > Reported-by: Gilles BULOZ <gilles.buloz@xxxxxxxxxxx> > Tested-by: Gilles BULOZ <gilles.buloz@xxxxxxxxxxx> > Fixes: 9ee4b83e51f7 ("serial: 8250: Add support for dmaengine") > Cc: stable@xxxxxxxxxxxxxxx > Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@xxxxxxxxxxxxxxx> > Link: https://lore.kernel.org/r/20230130114841.25749-2-ilpo.jarvinen@xxxxxxxxxxxxxxx > Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> > --- > drivers/tty/serial/8250/8250_dma.c | 14 +++++++++++++- > 1 file changed, 13 insertions(+), 1 deletion(-) Thanks, both queued up now. greg k-h