mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-22 23:12:32 +00:00
40 lines
1.5 KiB
Diff
40 lines
1.5 KiB
Diff
|
From 57e00b40033a376de3f3cf0bb9bf7590d2dd679d Mon Sep 17 00:00:00 2001
|
||
|
From: Christian 'Ansuel' Marangi <ansuelsmth@gmail.com>
|
||
|
Date: Tue, 14 Jun 2022 13:06:59 +0200
|
||
|
Subject: [PATCH 1/1] PM / devfreq: Fix kernel panic with cpu based scaling to
|
||
|
passive gov
|
||
|
|
||
|
The cpufreq passive register notifier can PROBE_DEFER and the devfreq
|
||
|
struct is freed and then reallocaed on probe retry.
|
||
|
The current logic assume that the code can't PROBE_DEFER so the devfreq
|
||
|
struct in the this variable in devfreq_passive_data is assumed to be
|
||
|
(if already set) always correct.
|
||
|
This cause kernel panic as the code try to access the wrong address.
|
||
|
To correctly handle this, update the this variable in
|
||
|
devfreq_passive_data to the devfreq reallocated struct.
|
||
|
|
||
|
Fixes: a03dacb0316f ("PM / devfreq: Add cpu based scaling support to passive governor")
|
||
|
Signed-off-by: Christian 'Ansuel' Marangi <ansuelsmth@gmail.com>
|
||
|
Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
|
||
|
---
|
||
|
drivers/devfreq/governor_passive.c | 3 +--
|
||
|
1 file changed, 1 insertion(+), 2 deletions(-)
|
||
|
|
||
|
diff --git a/drivers/devfreq/governor_passive.c b/drivers/devfreq/governor_passive.c
|
||
|
index 72c67979ebe1..091a69e1f487 100644
|
||
|
--- a/drivers/devfreq/governor_passive.c
|
||
|
+++ b/drivers/devfreq/governor_passive.c
|
||
|
@@ -407,8 +407,7 @@ static int devfreq_passive_event_handler(struct devfreq *devfreq,
|
||
|
if (!p_data)
|
||
|
return -EINVAL;
|
||
|
|
||
|
- if (!p_data->this)
|
||
|
- p_data->this = devfreq;
|
||
|
+ p_data->this = devfreq;
|
||
|
|
||
|
switch (event) {
|
||
|
case DEVFREQ_GOV_START:
|
||
|
--
|
||
|
2.37.2
|
||
|
|