Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

spi: fsl: fix controller deregistration

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>

authored by

Johan Hovold and committed by
Mark Brown
9b7abfed 485c900a

+13 -1
+13 -1
drivers/spi/spi-fsl-spi.c
··· 614 614 615 615 mpc8xxx_spi_write_reg(&reg_base->mode, regval); 616 616 617 - ret = devm_spi_register_controller(dev, host); 617 + ret = spi_register_controller(host); 618 618 if (ret < 0) 619 619 goto err_probe; 620 620 ··· 705 705 struct spi_controller *host = platform_get_drvdata(ofdev); 706 706 struct mpc8xxx_spi *mpc8xxx_spi = spi_controller_get_devdata(host); 707 707 708 + spi_controller_get(host); 709 + 710 + spi_unregister_controller(host); 711 + 708 712 fsl_spi_cpm_free(mpc8xxx_spi); 713 + 714 + spi_controller_put(host); 709 715 } 710 716 711 717 static struct platform_driver of_fsl_spi_driver = { ··· 757 751 struct spi_controller *host = platform_get_drvdata(pdev); 758 752 struct mpc8xxx_spi *mpc8xxx_spi = spi_controller_get_devdata(host); 759 753 754 + spi_controller_get(host); 755 + 756 + spi_unregister_controller(host); 757 + 760 758 fsl_spi_cpm_free(mpc8xxx_spi); 759 + 760 + spi_controller_put(host); 761 761 } 762 762 763 763 MODULE_ALIAS("platform:mpc8xxx_spi");