Commit f50b7905 authored by Jinjie Ruan's avatar Jinjie Ruan
Browse files

cpufreq: CPPC: Fix possible null-ptr-deref for cppc_get_cpu_cost()

stable inclusion
from stable-v6.6.64
commit f05ef81db63889f6f14eb77fd140dac6cedb6f7f
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/IBEAFH
CVE: CVE-2024-53230

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=f05ef81db63889f6f14eb77fd140dac6cedb6f7f



--------------------------------

[ Upstream commit 1a1374bb8c5926674973d849feed500bc61ad535 ]

cpufreq_cpu_get_raw() may return NULL if the cpu is not in
policy->cpus cpu mask and it will cause null pointer dereference,
so check NULL for cppc_get_cpu_cost().

Fixes: 740fcdc2 ("cpufreq: CPPC: Register EM based on efficiency class information")
Signed-off-by: default avatarJinjie Ruan <ruanjinjie@huawei.com>
Signed-off-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
Signed-off-by: default avatarJinjie Ruan <ruanjinjie@huawei.com>
parent b7dacff6
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -498,6 +498,9 @@ static int cppc_get_cpu_cost(struct device *cpu_dev, unsigned long KHz,
	int step;

	policy = cpufreq_cpu_get_raw(cpu_dev->id);
	if (!policy)
		return 0;

	cpu_data = policy->driver_data;
	perf_caps = &cpu_data->perf_caps;
	max_cap = arch_scale_cpu_capacity(cpu_dev->id);