]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
spi: omap2-mcspi: fix controller deregistration
authorJohan Hovold <johan@kernel.org>
Fri, 10 Apr 2026 08:17:35 +0000 (10:17 +0200)
committerMark Brown <broonie@kernel.org>
Fri, 10 Apr 2026 12:22:28 +0000 (13:22 +0100)
Make sure to deregister the controller before releasing underlying
resources like DMA during driver unbind.

Fixes: ccdc7bf92573 ("SPI: omap2_mcspi driver")
Cc: stable@vger.kernel.org # 2.6.23
Signed-off-by: Johan Hovold <johan@kernel.org>
Link: https://patch.msgid.link/20260410081757.503099-6-johan@kernel.org
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi-omap2-mcspi.c

index a3468e47e77d01ffc608a821842e9e1d85a9b93e..56b30ff58771a583683a1a1749c8138b08d1208e 100644 (file)
@@ -1592,7 +1592,7 @@ static int omap2_mcspi_probe(struct platform_device *pdev)
        if (status < 0)
                goto disable_pm;
 
-       status = devm_spi_register_controller(&pdev->dev, ctlr);
+       status = spi_register_controller(ctlr);
        if (status < 0)
                goto disable_pm;
 
@@ -1613,11 +1613,17 @@ static void omap2_mcspi_remove(struct platform_device *pdev)
        struct spi_controller *ctlr = platform_get_drvdata(pdev);
        struct omap2_mcspi *mcspi = spi_controller_get_devdata(ctlr);
 
+       spi_controller_get(ctlr);
+
+       spi_unregister_controller(ctlr);
+
        omap2_mcspi_release_dma(ctlr);
 
        pm_runtime_dont_use_autosuspend(mcspi->dev);
        pm_runtime_put_sync(mcspi->dev);
        pm_runtime_disable(&pdev->dev);
+
+       spi_controller_put(ctlr);
 }
 
 /* work with hotplug and coldplug */