Message ID | 1592300467-29196-2-git-send-email-krzk@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v3,1/2] spi: spi-fsl-dspi: Fix external abort on interrupt in resume or exit paths | expand |
Hi Krzysztof, On Tue, 16 Jun 2020 at 12:42, Krzysztof Kozlowski <krzk@kernel.org> wrote: > > The interrupt handler calls completion and is IRQ requested before the > completion is initialized. Logically it should be the other way. > > Fixes: 4f5ee75ea171 ("spi: spi-fsl-dspi: Replace interruptible wait queue with a simple completion") > Cc: <stable@vger.kernel.org> > Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org> > > --- I fail to see any good reason why this patch would go to a stable kernel. > > Changes since v2: > 1. None > > Changes since v1: > 1. Rework the commit msg. > --- > 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 7ecc90ec8f2f..51e0bf617b16 100644 > --- a/drivers/spi/spi-fsl-dspi.c > +++ b/drivers/spi/spi-fsl-dspi.c > @@ -1389,6 +1389,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) { > @@ -1396,8 +1398,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 > Thanks, -Vladimir
diff --git a/drivers/spi/spi-fsl-dspi.c b/drivers/spi/spi-fsl-dspi.c index 7ecc90ec8f2f..51e0bf617b16 100644 --- a/drivers/spi/spi-fsl-dspi.c +++ b/drivers/spi/spi-fsl-dspi.c @@ -1389,6 +1389,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) { @@ -1396,8 +1398,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) {
The interrupt handler calls completion and is IRQ requested before the completion is initialized. Logically it should be the other way. Fixes: 4f5ee75ea171 ("spi: spi-fsl-dspi: Replace interruptible wait queue with a simple completion") Cc: <stable@vger.kernel.org> Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org> --- Changes since v2: 1. None Changes since v1: 1. Rework the commit msg. --- drivers/spi/spi-fsl-dspi.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)