diff options
author | Arnd Bergmann <arnd@arndb.de> | 2016-09-15 11:38:38 -0400 |
---|---|---|
committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2016-09-16 18:58:00 -0400 |
commit | 4df27c91893fd13eaa30e9b0bca74f317816f428 (patch) | |
tree | 0e361f3fc2018ab46df24f3b676b6782edf0a63d | |
parent | 9395452b4aab7bc2475ef8935b4a4fb99d778d70 (diff) |
PM / OPP: avoid maybe-uninitialized warning
When CONFIG_OPTIMIZE_INLINING is set and we are building with -Wmaybe-uninitialized
enabled, we can get a warning for the opp core driver:
drivers/base/power/opp/core.c: In function 'dev_pm_opp_set_rate':
drivers/base/power/opp/core.c:560:8: warning: 'ou_volt_min' may be used uninitialized in this function [-Wmaybe-uninitialized]
This has only now appeared as a result of commit 797da5598f3a ("PM / devfreq:
Add COMPILE_TEST for build coverage"), which makes the driver visible in
some configurations that didn't have it before.
The warning is a false positive that I got with gcc-6.1.1, but there is
a simple workaround in removing the local variables that we get warnings
for (all three are affected depending on the configuration). This also
makes the code easier to read.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Reviewed-by: Stephen Boyd <sboyd@codeaurora.org>
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
-rw-r--r-- | drivers/base/power/opp/core.c | 10 |
1 files changed, 3 insertions, 7 deletions
diff --git a/drivers/base/power/opp/core.c b/drivers/base/power/opp/core.c index df0c70963d9e..4c7c6da7a989 100644 --- a/drivers/base/power/opp/core.c +++ b/drivers/base/power/opp/core.c | |||
@@ -584,7 +584,6 @@ int dev_pm_opp_set_rate(struct device *dev, unsigned long target_freq) | |||
584 | struct clk *clk; | 584 | struct clk *clk; |
585 | unsigned long freq, old_freq; | 585 | unsigned long freq, old_freq; |
586 | unsigned long u_volt, u_volt_min, u_volt_max; | 586 | unsigned long u_volt, u_volt_min, u_volt_max; |
587 | unsigned long ou_volt, ou_volt_min, ou_volt_max; | ||
588 | int ret; | 587 | int ret; |
589 | 588 | ||
590 | if (unlikely(!target_freq)) { | 589 | if (unlikely(!target_freq)) { |
@@ -620,11 +619,7 @@ int dev_pm_opp_set_rate(struct device *dev, unsigned long target_freq) | |||
620 | } | 619 | } |
621 | 620 | ||
622 | old_opp = _find_freq_ceil(opp_table, &old_freq); | 621 | old_opp = _find_freq_ceil(opp_table, &old_freq); |
623 | if (!IS_ERR(old_opp)) { | 622 | if (IS_ERR(old_opp)) { |
624 | ou_volt = old_opp->u_volt; | ||
625 | ou_volt_min = old_opp->u_volt_min; | ||
626 | ou_volt_max = old_opp->u_volt_max; | ||
627 | } else { | ||
628 | dev_err(dev, "%s: failed to find current OPP for freq %lu (%ld)\n", | 623 | dev_err(dev, "%s: failed to find current OPP for freq %lu (%ld)\n", |
629 | __func__, old_freq, PTR_ERR(old_opp)); | 624 | __func__, old_freq, PTR_ERR(old_opp)); |
630 | } | 625 | } |
@@ -683,7 +678,8 @@ restore_freq: | |||
683 | restore_voltage: | 678 | restore_voltage: |
684 | /* This shouldn't harm even if the voltages weren't updated earlier */ | 679 | /* This shouldn't harm even if the voltages weren't updated earlier */ |
685 | if (!IS_ERR(old_opp)) | 680 | if (!IS_ERR(old_opp)) |
686 | _set_opp_voltage(dev, reg, ou_volt, ou_volt_min, ou_volt_max); | 681 | _set_opp_voltage(dev, reg, old_opp->u_volt, |
682 | old_opp->u_volt_min, old_opp->u_volt_max); | ||
687 | 683 | ||
688 | return ret; | 684 | return ret; |
689 | } | 685 | } |