> -----Original Message----- > From: Sherry Sun <sherry.sun@xxxxxxx> > Sent: Sunday, May 21, 2023 9:51 PM > To: gregkh@xxxxxxxxxxxxxxxxxxx; jirislaby@xxxxxxxxxx; Shenwei Wang > <shenwei.wang@xxxxxxx>; ilpo.jarvinen@xxxxxxxxxxxxxxx > Cc: linux-serial@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; dl-linux-imx > <linux-imx@xxxxxxx> > Subject: [PATCH] tty: serial: fsl_lpuart: Check the return value of > dmaengine_tx_status > > Coverity reports the Unchecked return value (CHECKED_RETURN) warning: > Calling dmaengine_tx_status without checking return value. > > So here add the return value check for dmaengine_tx_status() function to make > coverity happy. > > Fixes: cf9aa72d2f91 ("tty: serial: fsl_lpuart: optimize the timer based EOP logic") > Signed-off-by: Sherry Sun <sherry.sun@xxxxxxx> > --- > drivers/tty/serial/fsl_lpuart.c | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/drivers/tty/serial/fsl_lpuart.c b/drivers/tty/serial/fsl_lpuart.c index > 92a3bd0f4158..f2a47a8c5b85 100644 > --- a/drivers/tty/serial/fsl_lpuart.c > +++ b/drivers/tty/serial/fsl_lpuart.c > @@ -1286,13 +1286,19 @@ static void lpuart_dma_rx_complete(void *arg) > static void lpuart_timer_func(struct timer_list *t) { > struct lpuart_port *sport = from_timer(sport, t, lpuart_timer); > + enum dma_status dmastat; Should be reverse Christmas tree order. Regards, Shenwei > struct dma_chan *chan = sport->dma_rx_chan; > struct circ_buf *ring = &sport->rx_ring; > struct dma_tx_state state; > unsigned long flags; > int count; > > - dmaengine_tx_status(chan, sport->dma_rx_cookie, &state); > + dmastat = dmaengine_tx_status(chan, sport->dma_rx_cookie, &state); > + if (dmastat == DMA_ERROR) { > + dev_err(sport->port.dev, "Rx DMA transfer failed!\n"); > + return; > + } > + > ring->head = sport->rx_sgl.length - state.residue; > count = CIRC_CNT(ring->head, ring->tail, sport->rx_sgl.length); > > -- > 2.17.1