36 lines
1.3 KiB
Diff
36 lines
1.3 KiB
Diff
From e23befe3ab66e4dbc3bb9da80bfe5cd75cd262f2 Mon Sep 17 00:00:00 2001
|
|
From: Samuel Holland <samuel@sholland.org>
|
|
Date: Sat, 3 Apr 2021 20:30:23 -0500
|
|
Subject: [PATCH 411/478] PM / devfreq: strengthen check for freq_table
|
|
|
|
Since commit ea572f816032 ("PM / devfreq: Change return type of
|
|
devfreq_set_freq_table()"), all devfreq devices are expected to have a
|
|
valid freq_table. The devfreq core unconditionally dereferences
|
|
freq_table in the sysfs code and in get_freq_range().
|
|
|
|
Therefore, we need to ensure that freq_table is both non-null and
|
|
non-empty (length is > 0). If either check fails, replace the table
|
|
using set_freq_table() or return the error.
|
|
|
|
Signed-off-by: Samuel Holland <samuel@sholland.org>
|
|
---
|
|
drivers/devfreq/devfreq.c | 2 +-
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c
|
|
index 85faa7a5c7d1..06333d430382 100644
|
|
--- a/drivers/devfreq/devfreq.c
|
|
+++ b/drivers/devfreq/devfreq.c
|
|
@@ -827,7 +827,7 @@ struct devfreq *devfreq_add_device(struct device *dev,
|
|
goto err_dev;
|
|
}
|
|
|
|
- if (!devfreq->profile->max_state && !devfreq->profile->freq_table) {
|
|
+ if (!devfreq->profile->max_state || !devfreq->profile->freq_table) {
|
|
mutex_unlock(&devfreq->lock);
|
|
err = set_freq_table(devfreq);
|
|
if (err < 0)
|
|
--
|
|
2.35.3
|
|
|