Patch "ASoC: rockchip: disable clock on error" has been added to the 4.14-stable tree
Subsystems (4)
This is a note to let you know that I've just added the patch titled
ASoC: rockchip: disable clock on error
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
asoc-rockchip-disable-clock-on-error.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From foo@baz Fri Feb 23 11:45:09 CET 2018
From: Stefan Potyra <[email protected]>
Date: Wed, 6 Dec 2017 16:03:24 +0100
Subject: ASoC: rockchip: disable clock on error
From: Stefan Potyra <[email protected]>
[ Upstream commit c7b92172a61b91936be985cb9bc499a4ebc6489b ]
Disable the clocks in rk_spdif_probe when an error occurs after one of the clocks has been enabled previously.
Found by Linux Driver Verification project (linuxtesting.org).
--- sound/soc/rockchip/rockchip_spdif.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-)
sound/soc/rockchip/rockchip_spdif.c +13 -5
@@ -322,26 +322,30 @@ static int rk_spdif_probe(struct platfor spdif->mclk =devm_clk_get (&pdev->dev,"mclk" );if (IS_ERR (spdif->mclk)) {dev_err (&pdev->dev,"Can't retrieve rk_spdif master clock\n" ); -return PTR_ERR (spdif->mclk); + ret =PTR_ERR (spdif->mclk); + goto err_disable_hclk; } ret =clk_prepare_enable (spdif->mclk);if (ret) {dev_err (spdif->dev,"clock enable failed %d\n" , ret); -return ret; + goto err_disable_clocks; } res =platform_get_resource (pdev,IORESOURCE_MEM ,0 ); regs =devm_ioremap_resource (&pdev->dev, res); -if (IS_ERR (regs)) -return PTR_ERR (regs); +if (IS_ERR (regs)) { + ret =PTR_ERR (regs); + goto err_disable_clocks; + } spdif->regmap =devm_regmap_init_mmio_clk (&pdev->dev,"hclk" , regs, &rk_spdif_regmap_config);if (IS_ERR (spdif->regmap)) {dev_err (&pdev->dev,"Failed to initialise managed register map\n" ); -return PTR_ERR (spdif->regmap); + ret =PTR_ERR (spdif->regmap); + goto err_disable_clocks; } spdif->playback_dma_data.addr = res->start +SPDIF_SMPDR ;
@@ -373,6 +377,10 @@ static int rk_spdif_probe(struct platfor err_pm_runtime:pm_runtime_disable (&pdev->dev); +err_disable_clocks: +clk_disable_unprepare (spdif->mclk); +err_disable_hclk: +clk_disable_unprepare (spdif->hclk);return ret; }
Patches currently in stable-queue which might be from [email protected] are
queue-4.14/asoc-rockchip-disable-clock-on-error.patch