diff options
author | Viresh Kumar <viresh.kumar@linaro.org> | 2020-12-28 10:51:04 +0530 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2021-01-06 14:56:49 +0100 |
commit | 1a58c171a523d2224fe12fb26fc459231f245b0d (patch) | |
tree | 78f2a98678611324f019cde3428aa5c073c4f93a /drivers/opp | |
parent | e8322837a2e56d6b8d4b87d81292805948991e2c (diff) |
opp: Call the missing clk_put() on error
commit 0e1d9ca1766f5d95fb881f57b6c4a1ffa63d4648 upstream.
Fix the clock reference counting by calling the missing clk_put() in the
error path.
Cc: v5.10 <stable@vger.kernel.org> # v5.10
Fixes: dd461cd9183f ("opp: Allow dev_pm_opp_get_opp_table() to return -EPROBE_DEFER")
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/opp')
-rw-r--r-- | drivers/opp/core.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/opp/core.c b/drivers/opp/core.c index 7f22807ff668..903b465c8568 100644 --- a/drivers/opp/core.c +++ b/drivers/opp/core.c @@ -1111,7 +1111,7 @@ static struct opp_table *_allocate_opp_table(struct device *dev, int index) ret = dev_pm_opp_of_find_icc_paths(dev, opp_table); if (ret) { if (ret == -EPROBE_DEFER) - goto remove_opp_dev; + goto put_clk; dev_warn(dev, "%s: Error finding interconnect paths: %d\n", __func__, ret); @@ -1125,6 +1125,9 @@ static struct opp_table *_allocate_opp_table(struct device *dev, int index) list_add(&opp_table->node, &opp_tables); return opp_table; +put_clk: + if (!IS_ERR(opp_table->clk)) + clk_put(opp_table->clk); remove_opp_dev: _remove_opp_dev(opp_dev, opp_table); err: |