diff options
author | Junjie Wu <junjiew@codeaurora.org> | 2014-12-10 17:01:13 -0800 |
---|---|---|
committer | David Keitel <dkeitel@codeaurora.org> | 2016-03-23 20:03:41 -0700 |
commit | 45f7fa73379d0209f7fb256ffb5f05e487d2c3d4 (patch) | |
tree | 3635445f6e6957ceacee45238d58bb0e2e3974c5 /drivers/devfreq/devfreq.c | |
parent | d207221fad70a3dceeb33f358e4261afce2c3439 (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.c | 4 |
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 */ |