On Sun, 14 Jun 2020 at 13:56, Krzysztof Kozlowski <krzk@xxxxxxxxxx> wrote: > > If interrupt fires early, the dspi_interrupt() could complete > (dspi->xfer_done) before its initialization happens. > > Fixes: 4f5ee75ea171 ("spi: spi-fsl-dspi: Replace interruptible wait queue with a simple completion") > Cc: <stable@xxxxxxxxxxxxxxx> > Signed-off-by: Krzysztof Kozlowski <krzk@xxxxxxxxxx> > --- Why would an interrupt fire before spi_register_controller, therefore before dspi_transfer_one_message could get called? Is this master or slave mode? > drivers/spi/spi-fsl-dspi.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/spi/spi-fsl-dspi.c b/drivers/spi/spi-fsl-dspi.c > index 57e7a626ba00..efb63ed9fd86 100644 > --- a/drivers/spi/spi-fsl-dspi.c > +++ b/drivers/spi/spi-fsl-dspi.c > @@ -1385,6 +1385,8 @@ static int dspi_probe(struct platform_device *pdev) > goto poll_mode; > } > > + init_completion(&dspi->xfer_done); > + > ret = request_threaded_irq(dspi->irq, dspi_interrupt, NULL, > IRQF_SHARED, pdev->name, dspi); > if (ret < 0) { > @@ -1392,8 +1394,6 @@ static int dspi_probe(struct platform_device *pdev) > goto out_clk_put; > } > > - init_completion(&dspi->xfer_done); > - > poll_mode: > > if (dspi->devtype_data->trans_mode == DSPI_DMA_MODE) { > -- > 2.7.4 >