CVE-2025-21803: LoongArch: Fix warnings during S3 suspend
In the Linux kernel, the following vulnerability has been resolved:
LoongArch: Fix warnings during S3 suspend
The enable_gpe_wakeup() function calls acpi_enable_all_wakeup_gpes(),
and the later one may call the preempt_schedule_common() function,
resulting in a thread switch and causing the CPU to be in an interrupt
enabled state after the enable_gpe_wakeup() function returns, leading
to the warnings as follow.
[ C0] WARNING: ... at kernel/time/timekeeping.c:845 ktime_get+0xbc/0xc8
[ C0] ...
[ C0] Call Trace:
[ C0] [<90000000002243b4>] show_stack+0x64/0x188
[ C0] [<900000000164673c>] dump_stack_lvl+0x60/0x88
[ C0] [<90000000002687e4>] __warn+0x8c/0x148
[ C0] [<90000000015e9978>] report_bug+0x1c0/0x2b0
[ C0] [<90000000016478e4>] do_bp+0x204/0x3b8
[ C0] [<90000000025b1924>] exception_handlers+0x1924/0x10000
[ C0] [<9000000000343bbc>] ktime_get+0xbc/0xc8
[ C0] [<9000000000354c08>] tick_sched_timer+0x30/0xb0
[ C0] [<90000000003408e0>] __hrtimer_run_queues+0x160/0x378
[ C0] [<9000000000341f14>] hrtimer_interrupt+0x144/0x388
[ C0] [<9000000000228348>] constant_timer_interrupt+0x38/0x48
[ C0] [<90000000002feba4>] __handle_irq_event_percpu+0x64/0x1e8
[ C0] [<90000000002fed48>] handle_irq_event_percpu+0x20/0x80
[ C0] [<9000000000306b9c>] handle_percpu_irq+0x5c/0x98
[ C0] [<90000000002fd4a0>] generic_handle_domain_irq+0x30/0x48
[ C0] [<9000000000d0c7b0>] handle_cpu_irq+0x70/0xa8
[ C0] [<9000000001646b30>] handle_loongarch_irq+0x30/0x48
[ C0] [<9000000001646bc8>] do_vint+0x80/0xe0
[ C0] [<90000000002aea1c>] finish_task_switch.isra.0+0x8c/0x2a8
[ C0] [<900000000164e34c>] __schedule+0x314/0xa48
[ C0] [<900000000164ead8>] schedule+0x58/0xf0
[ C0] [<9000000000294a2c>] worker_thread+0x224/0x498
[ C0] [<900000000029d2f0>] kthread+0xf8/0x108
[ C0] [<9000000000221f28>] ret_from_kernel_thread+0xc/0xa4
[ C0]
[ C0] ---[ end trace 0000000000000000 ]---
The root cause is acpi_enable_all_wakeup_gpes() uses a mutex to protect
acpi_hw_enable_all_wakeup_gpes(), and acpi_ut_acquire_mutex() may cause
a thread switch. Since there is no longer concurrent execution during
loongarch_acpi_suspend(), we can call acpi_hw_enable_all_wakeup_gpes()
directly in enable_gpe_wakeup().
The solution is similar to commit 22db06337f590d01 ("ACPI: sleep: Avoid
breaking S3 wakeup due to might_sleep()").
Security readout for executives and security teams
Plain-English summary
This Linux kernel issue affects LoongArch systems during S3 suspend handling. A wakeup setup path can unexpectedly allow scheduling and leave interrupts enabled, producing kernel warnings. The provided sources describe a correctness and stability bug, not confirmed data theft, privilege escalation, or remote compromise.
Executive priority
Treat this as a targeted stability maintenance issue for LoongArch Linux fleets, not an emergency internet-facing exposure based on provided evidence. Patch through normal kernel maintenance, faster where suspend reliability affects operations.
Technical view
In LoongArch ACPI suspend, enable_gpe_wakeup() called acpi_enable_all_wakeup_gpes(), whose mutex path can sleep via acpi_ut_acquire_mutex(). During loongarch_acpi_suspend(), that can cause a thread switch and interrupt-state mismatch warnings. The fix calls acpi_hw_enable_all_wakeup_gpes() directly because concurrent execution is not expected there.
Likely exposure
Exposure is likely limited to Linux systems running on LoongArch hardware that use ACPI S3 suspend paths. The source bundle lists Linux kernel versions and stable fix references, but exact distribution package impact must be mapped through vendor kernel advisories.
Exploitation context
The bundle does not show CISA KEV listing, active exploitation, exploit availability, CVSS, or a remote attack path. Evidence supports a suspend/resume kernel-state bug with warning output, not a publicly confirmed weaponized vulnerability.
Researcher notes
The key condition is LoongArch ACPI S3 suspend invoking wakeup GPE enablement through a sleeping mutex path. The source states no concurrent execution exists during loongarch_acpi_suspend(), supporting the direct lower-level call as the fix. No exploit primitives are documented.
Mitigation direction
Update affected LoongArch Linux kernels using vendor or stable kernel guidance.
Confirm fixes corresponding to the referenced kernel.org stable commits.
Prioritize systems where S3 suspend is enabled or operationally important.
Track distribution advisories for backported kernel package versions.
Validation and detection
Inventory Linux hosts running on LoongArch hardware.
Check kernel versions against vendor advisories and stable fix commits.
Review logs for suspend-related kernel warnings around ACPI wakeup GPE handling.
Test S3 suspend and resume after applying vendor kernel updates.
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-2025-21803 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
5Source 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.
Feb 27, 2025, 20:00 UTC (UTC+00:00)
CVE updatedCVE Program
The CVE record metadata indicates this as the latest update time.