]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
spi: dw: Disable clock after unregistering the host
authorMarek Vasut <marex@denx.de>
Tue, 18 Apr 2017 18:09:06 +0000 (20:09 +0200)
committerSasha Levin <alexander.levin@microsoft.com>
Wed, 23 May 2018 01:33:49 +0000 (21:33 -0400)
[ Upstream commit 400c18e3dc86e04ef5afec9b86a8586ca629b9e9 ]

The dw_mmio driver disables the block clock before unregistering
the host. The code unregistering the host may access the SPI block
registers. If register access happens with block clock disabled,
this may lead to a bus hang. Disable the clock after unregistering
the host to prevent such situation.

This bug was observed on Altera Cyclone V SoC.

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Cc: Mark Brown <broonie@kernel.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
drivers/spi/spi-dw-mmio.c

index 7edede6e024ba493ce0dfc7038d83e03eb88ef85..d075ee4de8b51ca888c24ac66b75db46fb3b1170 100644 (file)
@@ -121,8 +121,8 @@ static int dw_spi_mmio_remove(struct platform_device *pdev)
 {
        struct dw_spi_mmio *dwsmmio = platform_get_drvdata(pdev);
 
-       clk_disable_unprepare(dwsmmio->clk);
        dw_spi_remove_host(&dwsmmio->dws);
+       clk_disable_unprepare(dwsmmio->clk);
 
        return 0;
 }