diff options
| author | Yunhui Cui <[email protected]> | 2025-06-04 02:30:36 +0000 |
|---|---|---|
| committer | Rafael J. Wysocki <[email protected]> | 2025-06-10 18:52:50 +0000 |
| commit | 15eece6c5b05e5f9db0711978c3e3b7f1a2cfe12 (patch) | |
| tree | f69d4fcf01c9b1040241c7cd9787e918abee9529 /drivers/acpi/cppc_acpi.c | |
| parent | Linux 6.16-rc1 (diff) | |
| download | kernel-15eece6c5b05e5f9db0711978c3e3b7f1a2cfe12.tar.gz kernel-15eece6c5b05e5f9db0711978c3e3b7f1a2cfe12.zip | |
ACPI: CPPC: Fix NULL pointer dereference when nosmp is used
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 <[email protected]>
Signed-off-by: Yunhui Cui <[email protected]>
Link: https://patch.msgid.link/[email protected]
[ rjw: New subject ]
Signed-off-by: Rafael J. Wysocki <[email protected]>
Diffstat (limited to 'drivers/acpi/cppc_acpi.c')
| -rw-r--r-- | drivers/acpi/cppc_acpi.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/acpi/cppc_acpi.c b/drivers/acpi/cppc_acpi.c index a9ae2fd62863..6b649031808f 100644 --- a/drivers/acpi/cppc_acpi.c +++ b/drivers/acpi/cppc_acpi.c @@ -476,7 +476,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) && |
