CVE-2023-53070: ACPI: PPTT: Fix to avoid sleep in the atomic context when PPTT is absent
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.
Security readout for executives and security teams
Plain-English summary
This Linux kernel issue affects systems where firmware lacks the ACPI PPTT table. During CPU startup or topology handling, the kernel could try an operation that may sleep while in an atomic context, causing a kernel BUG warning. The sources do not show remote exploitation, privilege escalation, or data compromise.
Executive priority
Treat this as a maintenance-priority kernel stability issue unless local evidence shows boot or CPU hotplug impact. There is no source-backed evidence of active exploitation or broad business compromise, but affected infrastructure should receive normal kernel updates.
Technical view
acpi_get_pptt() cached mapped PPTT data for runtime use but did not cache the table’s absence. On systems without PPTT, secondary CPU cache discovery could call acpi_get_table() from atomic context, potentially waiting on a mutex and triggering a sleeping-in-atomic BUG. The fix returns NULL after PPTT absence is known.
Likely exposure
Exposure appears limited to affected Linux kernel versions on ACPI systems without PPTT. The bundle lists Linux 6.0, 6.1.21, 6.2.8, and 6.3 as affected, but distribution backport status must be verified separately.
Exploitation context
No active exploitation is reported in the provided sources, and KEV is false. The described failure is a kernel runtime correctness issue during CPU topology/cache initialization, not a documented attacker-driven exploit path.
Researcher notes
The key condition is PPTT absence plus runtime calls through CPU cache/topology initialization. The fix changes acpi_get_pptt() behavior to remember missing PPTT and avoid repeated acpi_get_table() calls from atomic context. CVSS and CWE data are not provided.
Mitigation direction
Update to a kernel containing the referenced stable fixes.
Check your Linux distribution advisory for backported kernel packages.
Prioritize affected ACPI servers or appliances that boot or hotplug CPUs unreliably.
Avoid assuming non-upstream version numbers map directly to affected status.
Validation and detection
Confirm the running kernel version and distribution patch level.
Check whether the platform exposes ACPI PPTT firmware data.
Review boot logs for sleeping-in-atomic BUG splats in ACPI PPTT paths.
Map deployed kernels against vendor advisories or the referenced stable commits.
Generated from the cited source records. This long-tail analysis has not been individually reviewed by a named human.
Potential ATT&CK relevance
Conservative CVE-to-ATT&CK context
These mappings and lookup hints may be relevant to the vulnerability behavior, CWE, affected product, or exposure path. Glexia-inferred context is not an official MITRE, ATT&CK, CWE, or CVE Program mapping.
ATT&CK lookup starting points
Use these exact CWE pages and searches to review the Glexia ATT&CK library from this CVE's weakness and description context.
cve · low confidence lookup
CVE-2023-53070 mapping review
Open the CVE-to-ATT&CK bridge for reviewed, inferred, or future official mappings tied to this CVE.
These fields come from the CVE record and ADP containers, not from Glexia's Take. They preserve time-varying source decisions such as CISA SSVC, KEV status, CVSS metrics, and provider references.
0CVSS vectors
3Timeline events
0ADP providers
4Source links
Vulnerability timeline
Timeline events are normalized from CVE metadata, CNA source timelines, ADP timelines, and KEV metadata when present.
CVE reservedCVE Program
The CVE ID was reserved by the assigning CNA.
CVE publishedCVE Program
The CVE record was published.
May 2, 2025, 15:55 UTC (UTC+00:00)
CVE updatedCVE Program
The CVE record metadata indicates this as the latest update time.