]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
spi: cadence-quadspi: fix controller deregistration
authorJohan Hovold <johan@kernel.org>
Tue, 14 Apr 2026 13:43:13 +0000 (15:43 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 17 May 2026 15:16:29 +0000 (17:16 +0200)
commit 964ee9793760e825b5c011741b4e3cfe06c87efc upstream.

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>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.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);