]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
spi: rockchip-sfc: Fix error in remove progress
authorJon Lin <jon.lin@rock-chips.com>
Wed, 18 Dec 2024 15:47:41 +0000 (23:47 +0800)
committerMark Brown <broonie@kernel.org>
Wed, 18 Dec 2024 16:02:08 +0000 (16:02 +0000)
Fix error in remove progress:
[   43.026148] Call trace:
[   43.026370]  klist_next+0x1c/0x1d4
[   43.026671]  device_for_each_child+0x48/0xac
[   43.027049]  spi_unregister_controller+0x30/0x130
[   43.027469]  rockchip_sfc_remove+0x48/0x80 [spi_rockchip_sfc]

Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
Link: https://patch.msgid.link/20241218154741.901591-1-jon.lin@rock-chips.com
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi-rockchip-sfc.c

index 69d0f21755684a8a01724c29eb97123044dcf6ae..70bbb459caa4f58ac5a76423b554ed624d295294 100644 (file)
@@ -182,6 +182,7 @@ struct rockchip_sfc {
        bool use_dma;
        u32 max_iosize;
        u16 version;
+       struct spi_controller *host;
 };
 
 static int rockchip_sfc_reset(struct rockchip_sfc *sfc)
@@ -574,6 +575,7 @@ static int rockchip_sfc_probe(struct platform_device *pdev)
 
        sfc = spi_controller_get_devdata(host);
        sfc->dev = dev;
+       sfc->host = host;
 
        sfc->regbase = devm_platform_ioremap_resource(pdev, 0);
        if (IS_ERR(sfc->regbase))
@@ -651,8 +653,8 @@ err_hclk:
 
 static void rockchip_sfc_remove(struct platform_device *pdev)
 {
-       struct spi_controller *host = platform_get_drvdata(pdev);
        struct rockchip_sfc *sfc = platform_get_drvdata(pdev);
+       struct spi_controller *host = sfc->host;
 
        spi_unregister_controller(host);