]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
spi: cadence-quadspi: fix controller deregistration
authorJohan Hovold <johan@kernel.org>
Tue, 14 Apr 2026 13:43:13 +0000 (15:43 +0200)
committerMark Brown <broonie@kernel.org>
Mon, 20 Apr 2026 11:39:25 +0000 (12:39 +0100)
Make sure to deregister the controller before dropping the reference
count that allows new operations to start to allow SPI drivers to do I/O
during deregistration.

Fixes: 7446284023e8 ("spi: cadence-quadspi: Implement refcount to handle unbind during busy")
Cc: stable@vger.kernel.org # 6.17
Cc: Khairul Anuar Romli <khairul.anuar.romli@altera.com>
Signed-off-by: Johan Hovold <johan@kernel.org>
Link: https://patch.msgid.link/20260414134319.978196-3-johan@kernel.org
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi-cadence-quadspi.c

index 2ead419e896e2df18ce07ee0833cf523722db802..50ef65fc5dedec7297a09bdfbfad2ff10a397857 100644 (file)
@@ -2020,13 +2020,13 @@ static void cqspi_remove(struct platform_device *pdev)
 
        ddata = of_device_get_match_data(dev);
 
+       spi_unregister_controller(cqspi->host);
+
        refcount_set(&cqspi->refcount, 0);
 
        if (!refcount_dec_and_test(&cqspi->inflight_ops))
                cqspi_wait_idle(cqspi);
 
-       spi_unregister_controller(cqspi->host);
-
        if (cqspi->rx_chan)
                dma_release_channel(cqspi->rx_chan);