| From 7f18e809ef8c7e5fc9ea80951abf49620fdbfc65 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Wed, 4 Jun 2025 10:30:36 +0800 |
| Subject: ACPI: CPPC: Fix NULL pointer dereference when nosmp is used |
| |
| From: Yunhui Cui <cuiyunhui@bytedance.com> |
| |
| [ Upstream commit 15eece6c5b05e5f9db0711978c3e3b7f1a2cfe12 ] |
| |
| With nosmp in cmdline, other CPUs are not brought up, leaving |
| their cpc_desc_ptr NULL. CPU0's iteration via for_each_possible_cpu() |
| dereferences these NULL pointers, causing panic. |
| |
| Panic backtrace: |
| |
| [ 0.401123] Unable to handle kernel NULL pointer dereference at virtual address 00000000000000b8 |
| ... |
| [ 0.403255] [<ffffffff809a5818>] cppc_allow_fast_switch+0x6a/0xd4 |
| ... |
| Kernel panic - not syncing: Attempted to kill init! |
| |
| Fixes: 3cc30dd00a58 ("cpufreq: CPPC: Enable fast_switch") |
| Reported-by: Xu Lu <luxu.kernel@bytedance.com> |
| Signed-off-by: Yunhui Cui <cuiyunhui@bytedance.com> |
| Link: https://patch.msgid.link/20250604023036.99553-1-cuiyunhui@bytedance.com |
| [ rjw: New subject ] |
| Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/acpi/cppc_acpi.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| diff --git a/drivers/acpi/cppc_acpi.c b/drivers/acpi/cppc_acpi.c |
| index ed02a2a9970aa..10d531427ba77 100644 |
| --- a/drivers/acpi/cppc_acpi.c |
| +++ b/drivers/acpi/cppc_acpi.c |
| @@ -461,7 +461,7 @@ bool cppc_allow_fast_switch(void) |
| struct cpc_desc *cpc_ptr; |
| int cpu; |
| |
| - for_each_possible_cpu(cpu) { |
| + for_each_present_cpu(cpu) { |
| cpc_ptr = per_cpu(cpc_desc_ptr, cpu); |
| desired_reg = &cpc_ptr->cpc_regs[DESIRED_PERF]; |
| if (!CPC_IN_SYSTEM_MEMORY(desired_reg) && |
| -- |
| 2.39.5 |
| |