summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohan Hovold <johan@kernel.org>2018-07-03 13:05:47 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2018-08-22 08:44:55 +0300
commit16dd10970fee8724b1a199a21517a6349ff8a51d (patch)
treed32a3a1780915a856cb644420c228ff82eed242d
parent0e3207bd59ffeb895ca11d6043dc446fda922776 (diff)
downloadlinux-16dd10970fee8724b1a199a21517a6349ff8a51d.tar.xz
misc: sram: fix resource leaks in probe error path
commit f294d00961d1d869ecffa60e280eeeee1ccf9a49 upstream. Make sure to disable clocks and deregister any exported partitions before returning on late probe errors. Note that since commit ee895ccdf776 ("misc: sram: fix enabled clock leak on error path"), partitions are deliberately exported before enabling the clock so we stick to that logic here. A follow up patch will address this. Cc: stable <stable@vger.kernel.org> # 4.9 Cc: Alexandre Belloni <alexandre.belloni@free-electrons.com> Signed-off-by: Johan Hovold <johan@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/misc/sram.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/misc/sram.c b/drivers/misc/sram.c
index fc0415771c00..4dd0d868ff88 100644
--- a/drivers/misc/sram.c
+++ b/drivers/misc/sram.c
@@ -407,13 +407,20 @@ static int sram_probe(struct platform_device *pdev)
if (init_func) {
ret = init_func();
if (ret)
- return ret;
+ goto err_disable_clk;
}
dev_dbg(sram->dev, "SRAM pool: %zu KiB @ 0x%p\n",
gen_pool_size(sram->pool) / 1024, sram->virt_base);
return 0;
+
+err_disable_clk:
+ if (sram->clk)
+ clk_disable_unprepare(sram->clk);
+ sram_free_partitions(sram);
+
+ return ret;
}
static int sram_remove(struct platform_device *pdev)