]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
spi: topcliff-pch: fix controller deregistration
authorJohan Hovold <johan@kernel.org>
Tue, 14 Apr 2026 13:43:18 +0000 (15:43 +0200)
committerMark Brown <broonie@kernel.org>
Mon, 20 Apr 2026 11:39:30 +0000 (12:39 +0100)
Make sure to deregister the controller before disabling and releasing
underlying resources like interrupts and DMA during driver unbind.

Fixes: e8b17b5b3f30 ("spi/topcliff: Add topcliff platform controller hub (PCH) spi bus driver")
Cc: stable@vger.kernel.org # 2.6.37
Cc: Masayuki Ohtake <masa-korg@dsn.okisemi.com>
Signed-off-by: Johan Hovold <johan@kernel.org>
Link: https://patch.msgid.link/20260414134319.978196-8-johan@kernel.org
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi-topcliff-pch.c

index cae2dcefabea72e391364010178d629a5c62a60a..c120436434d0e6945400245c6ce3fe439c3301b9 100644 (file)
@@ -1406,6 +1406,10 @@ static void pch_spi_pd_remove(struct platform_device *plat_dev)
        dev_dbg(&plat_dev->dev, "%s:[ch%d] irq=%d\n",
                __func__, plat_dev->id, board_dat->pdev->irq);
 
+       spi_controller_get(data->host);
+
+       spi_unregister_controller(data->host);
+
        if (use_dma)
                pch_free_dma_buf(board_dat, data);
 
@@ -1433,7 +1437,8 @@ static void pch_spi_pd_remove(struct platform_device *plat_dev)
        }
 
        pci_iounmap(board_dat->pdev, data->io_remap_addr);
-       spi_unregister_controller(data->host);
+
+       spi_controller_put(data->host);
 }
 #ifdef CONFIG_PM
 static int pch_spi_pd_suspend(struct platform_device *pd_dev,