diff options
author | Viresh Kumar <viresh.kumar@linaro.org> | 2020-10-27 07:19:03 +0100 |
---|---|---|
committer | Viresh Kumar <viresh.kumar@linaro.org> | 2020-11-06 08:20:02 +0100 |
commit | 9e62edac519da71bbc981e4c984fe67729b0d1f3 (patch) | |
tree | 008dd32a6f82a59b78028d70a93ce26295a98ec3 /drivers | |
parent | opp: Allocate the OPP table outside of opp_table_lock (diff) | |
download | linux-9e62edac519da71bbc981e4c984fe67729b0d1f3.tar.xz linux-9e62edac519da71bbc981e4c984fe67729b0d1f3.zip |
opp: Don't return opp_dev from _find_opp_dev()
The caller of _find_opp_dev() only needs to know if the opp_dev is there
in the list or not.
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/opp/core.c | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/drivers/opp/core.c b/drivers/opp/core.c index 6f4a73a6391f..9915e8487f0b 100644 --- a/drivers/opp/core.c +++ b/drivers/opp/core.c @@ -32,31 +32,29 @@ DEFINE_MUTEX(opp_table_lock); /* Flag indicating that opp_tables list is being updated at the moment */ static bool opp_tables_busy; -static struct opp_device *_find_opp_dev(const struct device *dev, - struct opp_table *opp_table) +static bool _find_opp_dev(const struct device *dev, struct opp_table *opp_table) { struct opp_device *opp_dev; + bool found = false; + mutex_lock(&opp_table->lock); list_for_each_entry(opp_dev, &opp_table->dev_list, node) - if (opp_dev->dev == dev) - return opp_dev; + if (opp_dev->dev == dev) { + found = true; + break; + } - return NULL; + mutex_unlock(&opp_table->lock); + return found; } static struct opp_table *_find_opp_table_unlocked(struct device *dev) { struct opp_table *opp_table; - bool found; list_for_each_entry(opp_table, &opp_tables, node) { - mutex_lock(&opp_table->lock); - found = !!_find_opp_dev(dev, opp_table); - mutex_unlock(&opp_table->lock); - - if (found) { + if (_find_opp_dev(dev, opp_table)) { _get_opp_table_kref(opp_table); - return opp_table; } } |