Re: [PATCH] PM: EM: Fix uninitialized power in em_create_perf_table

From: Lukasz Luba
Date: Mon Nov 04 2024 - 04:13:33 EST


Hi Jinjie,

On 11/4/24 09:03, Jinjie Ruan wrote:
In em_create_perf_table(), power is uninitialized and passed the pointer
to active_power() hook, but the hook function may not assign it and
return 0, such as mtk_cpufreq_get_cpu_power(), so the later zero check for

Please fix the driver. I have checked that function. It must return
-EINVAL when the 'policy' is not found. We cannot progress with power=0.


power is not invalid, initialize power to zero to fix it.

Cc: stable@xxxxxxxxxxxxxxx
Fixes: 7d9895c7fbfc ("PM / EM: introduce em_dev_register_perf_domain function")
Signed-off-by: Jinjie Ruan <ruanjinjie@xxxxxxxxxx>
---
kernel/power/energy_model.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/kernel/power/energy_model.c b/kernel/power/energy_model.c
index 927cc55ba0b3..866a3e9c05b2 100644
--- a/kernel/power/energy_model.c
+++ b/kernel/power/energy_model.c
@@ -344,7 +344,7 @@ static int em_create_perf_table(struct device *dev, struct em_perf_domain *pd,
struct em_data_callback *cb,
unsigned long flags)
{
- unsigned long power, freq, prev_freq = 0;
+ unsigned long power = 0, freq, prev_freq = 0;
int nr_states = pd->nr_perf_states;
int i, ret;


This patch proposal is just a workaround.

When you send a patch to that MTK driver, I can review it for you so
please add me on CC.

Regards,
Lukasz