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>
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);