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

Fixes: 4178b6b1b595 ("spi: fsl-(e)spi: migrate to using devm_ functions to simplify cleanup")
Cc: stable@vger.kernel.org # 4.3
Cc: Heiner Kallweit <hkallweit1@gmail.com>
Signed-off-by: Johan Hovold <johan@kernel.org>
Link: https://patch.msgid.link/20260410064749.496888-1-johan@kernel.org
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi-fsl-spi.c

index bf3fc3ce0cc2f7c22d506cf9629b738bb510b23d..1252c41c206f870569f56866e81c04442c5a176c 100644 (file)
@@ -614,7 +614,7 @@ static struct spi_controller *fsl_spi_probe(struct device *dev,
 
        mpc8xxx_spi_write_reg(&reg_base->mode, regval);
 
-       ret = devm_spi_register_controller(dev, host);
+       ret = spi_register_controller(host);
        if (ret < 0)
                goto err_probe;
 
@@ -705,7 +705,13 @@ static void of_fsl_spi_remove(struct platform_device *ofdev)
        struct spi_controller *host = platform_get_drvdata(ofdev);
        struct mpc8xxx_spi *mpc8xxx_spi = spi_controller_get_devdata(host);
 
+       spi_controller_get(host);
+
+       spi_unregister_controller(host);
+
        fsl_spi_cpm_free(mpc8xxx_spi);
+
+       spi_controller_put(host);
 }
 
 static struct platform_driver of_fsl_spi_driver = {
@@ -751,7 +757,13 @@ static void plat_mpc8xxx_spi_remove(struct platform_device *pdev)
        struct spi_controller *host = platform_get_drvdata(pdev);
        struct mpc8xxx_spi *mpc8xxx_spi = spi_controller_get_devdata(host);
 
+       spi_controller_get(host);
+
+       spi_unregister_controller(host);
+
        fsl_spi_cpm_free(mpc8xxx_spi);
+
+       spi_controller_put(host);
 }
 
 MODULE_ALIAS("platform:mpc8xxx_spi");