projects
/
linux-2.6-microblaze.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
opp: Call the missing clk_put() on error
[linux-2.6-microblaze.git]
/
drivers
/
opp
/
core.c
diff --git
a/drivers/opp/core.c
b/drivers/opp/core.c
index
4268eb3
..
8c905aa
100644
(file)
--- a/
drivers/opp/core.c
+++ b/
drivers/opp/core.c
@@
-1092,7
+1092,7
@@
static struct opp_table *_allocate_opp_table(struct device *dev, int index)
if (IS_ERR(opp_table->clk)) {
ret = PTR_ERR(opp_table->clk);
if (ret == -EPROBE_DEFER)
if (IS_ERR(opp_table->clk)) {
ret = PTR_ERR(opp_table->clk);
if (ret == -EPROBE_DEFER)
- goto
err
;
+ goto
remove_opp_dev
;
dev_dbg(dev, "%s: Couldn't find clock: %d\n", __func__, ret);
}
dev_dbg(dev, "%s: Couldn't find clock: %d\n", __func__, ret);
}
@@
-1101,7
+1101,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)
ret = dev_pm_opp_of_find_icc_paths(dev, opp_table);
if (ret) {
if (ret == -EPROBE_DEFER)
- goto
err
;
+ goto
put_clk
;
dev_warn(dev, "%s: Error finding interconnect paths: %d\n",
__func__, ret);
dev_warn(dev, "%s: Error finding interconnect paths: %d\n",
__func__, ret);
@@
-1113,6
+1113,11
@@
static struct opp_table *_allocate_opp_table(struct device *dev, int index)
return opp_table;
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:
kfree(opp_table);
return ERR_PTR(ret);
err:
kfree(opp_table);
return ERR_PTR(ret);