summaryrefslogtreecommitdiff
path: root/drivers/devfreq/devfreq.c
diff options
context:
space:
mode:
authorJunjie Wu <junjiew@codeaurora.org>2014-12-10 17:01:13 -0800
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-23 20:03:41 -0700
commit45f7fa73379d0209f7fb256ffb5f05e487d2c3d4 (patch)
tree3635445f6e6957ceacee45238d58bb0e2e3974c5 /drivers/devfreq/devfreq.c
parentd207221fad70a3dceeb33f358e4261afce2c3439 (diff)
PM / devfreq: Fix NULL pointer dereference if freq_table is empty
If max_state is 0, freq_table will be empty. Change do-while loop to while loop to avoid dereferencing freq_table. Change-Id: I4a24e9b8cab8073db429c74e627b7fb50076ea93 Signed-off-by: Junjie Wu <junjiew@codeaurora.org>
Diffstat (limited to 'drivers/devfreq/devfreq.c')
-rw-r--r--drivers/devfreq/devfreq.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c
index 24ddf13214f0..bc6623f13ab5 100644
--- a/drivers/devfreq/devfreq.c
+++ b/drivers/devfreq/devfreq.c
@@ -1001,7 +1001,7 @@ static ssize_t available_frequencies_show(struct device *d,
rcu_read_lock();
use_opp = dev_pm_opp_get_opp_count(dev) > 0;
- do {
+ while (use_opp || (!use_opp && i < max_state)) {
if (use_opp) {
opp = dev_pm_opp_find_freq_ceil(dev, &freq);
if (IS_ERR(opp))
@@ -1013,7 +1013,7 @@ static ssize_t available_frequencies_show(struct device *d,
count += scnprintf(&buf[count], (PAGE_SIZE - count - 2),
"%lu ", freq);
freq++;
- } while (use_opp || (!use_opp && i < max_state));
+ }
rcu_read_unlock();
/* Truncate the trailing space */