Le 26/07/2023 à 17:01, Herve Codina a écrit : > The qmc_chan_reset_rx() set the is_rx_stopped flag. This leads to an > inconsistent state in the following sequence. > qmc_chan_stop() > qmc_chan_reset() > Indeed, after the qmc_chan_reset() call, the channel must still be > stopped. Only a qmc_chan_start() call can move the channel from stopped > state to started state. > > Fix the issue removing the is_rx_stopped flag setting from > qmc_chan_reset() > > Fixes: 3178d58e0b97 ("soc: fsl: cpm1: Add support for QMC") > Signed-off-by: Herve Codina <herve.codina@xxxxxxxxxxx> Reviewed-by: Christophe Leroy <christophe.leroy@xxxxxxxxxx> > --- > drivers/soc/fsl/qe/qmc.c | 1 - > 1 file changed, 1 deletion(-) > > diff --git a/drivers/soc/fsl/qe/qmc.c b/drivers/soc/fsl/qe/qmc.c > index 7ad0d77f1740..8dc73cc1a83b 100644 > --- a/drivers/soc/fsl/qe/qmc.c > +++ b/drivers/soc/fsl/qe/qmc.c > @@ -685,7 +685,6 @@ static void qmc_chan_reset_rx(struct qmc_chan *chan) > qmc_read16(chan->s_param + QMC_SPE_RBASE)); > > chan->rx_pending = 0; > - chan->is_rx_stopped = false; > > spin_unlock_irqrestore(&chan->rx_lock, flags); > }