]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
spi: geni-qcom: Fix incorrect free_irq() sequence
authorJinjie Ruan <ruanjinjie@huawei.com>
Mon, 9 Sep 2024 07:31:40 +0000 (15:31 +0800)
committerMark Brown <broonie@kernel.org>
Mon, 9 Sep 2024 11:57:33 +0000 (12:57 +0100)
In spi_geni_remove(), the free_irq() sequence is different from that
on the probe error path. And the IRQ will still remain and it's interrupt
handler may use the dma channel after release dma channel and before free
irq, which is not secure, fix it.

Fixes: b59c122484ec ("spi: spi-geni-qcom: Add support for GPI dma")
Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Link: https://patch.msgid.link/20240909073141.951494-3-ruanjinjie@huawei.com
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi-geni-qcom.c

index fef522fece1b862d0ec75c038830eeaf6c308c53..6f4057330444d5cf8cff88ca73672fc5edd22d98 100644 (file)
@@ -1170,9 +1170,9 @@ static void spi_geni_remove(struct platform_device *pdev)
        /* Unregister _before_ disabling pm_runtime() so we stop transfers */
        spi_unregister_controller(spi);
 
-       spi_geni_release_dma_chan(mas);
-
        free_irq(mas->irq, spi);
+
+       spi_geni_release_dma_chan(mas);
 }
 
 static int __maybe_unused spi_geni_runtime_suspend(struct device *dev)