Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

spi: octeon: fix controller deregistration

Make sure to deregister the controller before disabling it to avoid
hanging or leaking resources associated with the queue when the queue is
non-empty.

Fixes: 22ad2d8df77d ("spi: octeon: use devm_spi_register_master()")
Cc: stable@vger.kernel.org # 3.13
Cc: Jingoo Han <jg1.han@samsung.com>
Signed-off-by: Johan Hovold <johan@kernel.org>
Link: https://patch.msgid.link/20260409120419.388546-9-johan@kernel.org
Signed-off-by: Mark Brown <broonie@kernel.org>

authored by

Johan Hovold and committed by
Mark Brown
3c49a4d8 c3d97c33

+7 -1
+7 -1
drivers/spi/spi-cavium-octeon.c
··· 54 54 host->bits_per_word_mask = SPI_BPW_MASK(8); 55 55 host->max_speed_hz = OCTEON_SPI_MAX_CLOCK_HZ; 56 56 57 - err = devm_spi_register_controller(&pdev->dev, host); 57 + err = spi_register_controller(host); 58 58 if (err) { 59 59 dev_err(&pdev->dev, "register host failed: %d\n", err); 60 60 goto fail; ··· 73 73 struct spi_controller *host = platform_get_drvdata(pdev); 74 74 struct octeon_spi *p = spi_controller_get_devdata(host); 75 75 76 + spi_controller_get(host); 77 + 78 + spi_unregister_controller(host); 79 + 76 80 /* Clear the CSENA* and put everything in a known state. */ 77 81 writeq(0, p->register_base + OCTEON_SPI_CFG(p)); 82 + 83 + spi_controller_put(host); 78 84 } 79 85 80 86 static const struct of_device_id octeon_spi_match[] = {