CVE-2023-53070

ACPI: PPTT: Fix to avoid sleep in the atomic context when PPTT is absent

published May 2, 2025

CVSS
—
EPSS
0%
Percentile
9.2
In the wild
Unconfirmed
What it is

In the Linux kernel, the following vulnerability has been resolved:

ACPI: PPTT: Fix to avoid sleep in the atomic context when PPTT is absent

Commit 0c80f9e165f8 ("ACPI: PPTT: Leave the table mapped for the runtime usage")

enabled to map PPTT once on the first invocation of acpi_get_pptt() and

never unmapped the same allowing it to be used at runtime with out the

hassle of mapping and unmapping the table. This was needed to fetch LLC

information from the PPTT in the cpuhotplug path which is executed in

the atomic context as the acpi_get_table() might sleep waiting for a

mutex.

However it missed to handle the case when there is no PPTT on the system

which results in acpi_get_pptt() being called from all the secondary

CPUs attempting to fetch the LLC information in the atomic context

without knowing the absence of PPTT resulting in the splat like below:

| BUG: sleeping function called from invalid context at kernel/locking/semaphore.c:164

| in_atomic(): 1, irqs_disabled(): 1, non_block: 0, pid: 0, name: swapper/1

| preempt_count: 1, expected: 0

| RCU nest depth: 0, expected: 0

| no locks held by swapper/1/0.

| irq event stamp: 0

| hardirqs last enabled at (0): 0x0

| hardirqs last disabled at (0): copy_process+0x61c/0x1b40

| softirqs last enabled at (0): copy_process+0x61c/0x1b40

| softirqs last disabled at (0): 0x0

| CPU: 1 PID: 0 Comm: swapper/1 Not tainted 6.3.0-rc1 #1

| Call trace:

| dump_backtrace+0xac/0x138

| show_stack+0x30/0x48

| dump_stack_lvl+0x60/0xb0

| dump_stack+0x18/0x28

| __might_resched+0x160/0x270

| __might_sleep+0x58/0xb0

| down_timeout+0x34/0x98

| acpi_os_wait_semaphore+0x7c/0xc0

| acpi_ut_acquire_mutex+0x58/0x108

| acpi_get_table+0x40/0xe8

| acpi_get_pptt+0x48/0xa0

| acpi_get_cache_info+0x38/0x140

| init_cache_level+0xf4/0x118

| detect_cache_attributes+0x2e4/0x640

| update_siblings_masks+0x3c/0x330

| store_cpu_topology+0x88/0xf0

| secondary_start_kernel+0xd0/0x168

| __secondary_switched+0xb8/0xc0

Update acpi_get_pptt() to consider the fact that PPTT is once checked and

is not available on the system and return NULL avoiding any attempts to

fetch PPTT and thereby avoiding any possible sleep waiting for a mutex

in the atomic context.

The record
Technical detail
CVSS
Not scored
CVSS v4.0
Not supplied
EPSS
0.00199 · 9.2th percentile
Published
2025-05-02T15:55Z
EPSS history
Timeline
  • 02 MAY 15:55Z
    ACPI: PPTT: Fix to avoid sleep in the atomic context when PPTT is absent
    cvelistv5