CVE-2025-21803

Source
https://nvd.nist.gov/vuln/detail/CVE-2025-21803
Import Source
https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2025-21803.json
JSON Data
https://api.test.osv.dev/v1/vulns/CVE-2025-21803
Downstream
Published
2025-02-27T20:00:56Z
Modified
2025-10-10T07:04:49.651467Z
Summary
LoongArch: Fix warnings during S3 suspend
Details

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

LoongArch: Fix warnings during S3 suspend

The enablegpewakeup() function calls acpienableallwakeupgpes(), and the later one may call the preemptschedulecommon() function, resulting in a thread switch and causing the CPU to be in an interrupt enabled state after the enablegpewakeup() function returns, leading to the warnings as follow.

[ C0] WARNING: ... at kernel/time/timekeeping.c:845 ktimeget+0xbc/0xc8 [ C0] ... [ C0] Call Trace: [ C0] [<90000000002243b4>] showstack+0x64/0x188 [ C0] [<900000000164673c>] dumpstacklvl+0x60/0x88 [ C0] [<90000000002687e4>] _warn+0x8c/0x148 [ C0] [<90000000015e9978>] reportbug+0x1c0/0x2b0 [ C0] [<90000000016478e4>] dobp+0x204/0x3b8 [ C0] [<90000000025b1924>] exceptionhandlers+0x1924/0x10000 [ C0] [<9000000000343bbc>] ktimeget+0xbc/0xc8 [ C0] [<9000000000354c08>] tickschedtimer+0x30/0xb0 [ C0] [<90000000003408e0>] _hrtimerrunqueues+0x160/0x378 [ C0] [<9000000000341f14>] hrtimerinterrupt+0x144/0x388 [ C0] [<9000000000228348>] constanttimerinterrupt+0x38/0x48 [ C0] [<90000000002feba4>] _handleirqeventpercpu+0x64/0x1e8 [ C0] [<90000000002fed48>] handleirqeventpercpu+0x20/0x80 [ C0] [<9000000000306b9c>] handlepercpuirq+0x5c/0x98 [ C0] [<90000000002fd4a0>] generichandledomainirq+0x30/0x48 [ C0] [<9000000000d0c7b0>] handlecpuirq+0x70/0xa8 [ C0] [<9000000001646b30>] handleloongarchirq+0x30/0x48 [ C0] [<9000000001646bc8>] dovint+0x80/0xe0 [ C0] [<90000000002aea1c>] finishtaskswitch.isra.0+0x8c/0x2a8 [ C0] [<900000000164e34c>] _schedule+0x314/0xa48 [ C0] [<900000000164ead8>] schedule+0x58/0xf0 [ C0] [<9000000000294a2c>] workerthread+0x224/0x498 [ C0] [<900000000029d2f0>] kthread+0xf8/0x108 [ C0] [<9000000000221f28>] retfromkernel_thread+0xc/0xa4 [ C0] [ C0] ---[ end trace 0000000000000000 ]---

The root cause is acpienableallwakeupgpes() uses a mutex to protect acpihwenableallwakeupgpes(), and acpiutacquiremutex() may cause a thread switch. Since there is no longer concurrent execution during loongarchacpisuspend(), we can call acpihwenableallwakeupgpes() directly in enablegpe_wakeup().

The solution is similar to commit 22db06337f590d01 ("ACPI: sleep: Avoid breaking S3 wakeup due to might_sleep()").

References

Affected packages

Git / git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

Affected ranges

Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
366bb35a8e48198cefcd3484ac6b2374d1347873
Fixed
d49ab6857d98266010f3446c9c2063014db5b654
Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
366bb35a8e48198cefcd3484ac6b2374d1347873
Fixed
194d26a5a43c26dc98a9b4e2c1d521dcb84dd1bf
Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
366bb35a8e48198cefcd3484ac6b2374d1347873
Fixed
8682a71a7f6de7c683f31b4334b04e19685a05f9
Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
366bb35a8e48198cefcd3484ac6b2374d1347873
Fixed
26c0a2d93af55d30a46d5f45d3e9c42cde730168

Affected versions

v6.*

v6.10
v6.10-rc1
v6.10-rc2
v6.10-rc3
v6.10-rc4
v6.10-rc5
v6.10-rc6
v6.10-rc7
v6.11
v6.11-rc1
v6.11-rc2
v6.11-rc3
v6.11-rc4
v6.11-rc5
v6.11-rc6
v6.11-rc7
v6.12
v6.12-rc1
v6.12-rc2
v6.12-rc3
v6.12-rc4
v6.12-rc5
v6.12-rc6
v6.12-rc7
v6.12.1
v6.12.10
v6.12.11
v6.12.12
v6.12.2
v6.12.3
v6.12.4
v6.12.5
v6.12.6
v6.12.7
v6.12.8
v6.12.9
v6.13
v6.13-rc1
v6.13-rc2
v6.13-rc3
v6.13-rc4
v6.13-rc5
v6.13-rc6
v6.13-rc7
v6.13.1
v6.2
v6.2-rc1
v6.2-rc2
v6.2-rc3
v6.2-rc4
v6.2-rc5
v6.2-rc6
v6.2-rc7
v6.2-rc8
v6.3
v6.3-rc1
v6.3-rc2
v6.3-rc3
v6.3-rc4
v6.3-rc5
v6.3-rc6
v6.3-rc7
v6.4
v6.4-rc1
v6.4-rc2
v6.4-rc3
v6.4-rc4
v6.4-rc5
v6.4-rc6
v6.4-rc7
v6.5
v6.5-rc1
v6.5-rc2
v6.5-rc3
v6.5-rc4
v6.5-rc5
v6.5-rc6
v6.5-rc7
v6.6
v6.6-rc1
v6.6-rc2
v6.6-rc3
v6.6-rc4
v6.6-rc5
v6.6-rc6
v6.6-rc7
v6.6.1
v6.6.10
v6.6.11
v6.6.12
v6.6.13
v6.6.14
v6.6.15
v6.6.16
v6.6.17
v6.6.18
v6.6.19
v6.6.2
v6.6.20
v6.6.21
v6.6.22
v6.6.23
v6.6.24
v6.6.25
v6.6.26
v6.6.27
v6.6.28
v6.6.29
v6.6.3
v6.6.30
v6.6.31
v6.6.32
v6.6.33
v6.6.34
v6.6.35
v6.6.36
v6.6.37
v6.6.38
v6.6.39
v6.6.4
v6.6.40
v6.6.41
v6.6.42
v6.6.43
v6.6.44
v6.6.45
v6.6.46
v6.6.47
v6.6.48
v6.6.49
v6.6.5
v6.6.50
v6.6.51
v6.6.52
v6.6.53
v6.6.54
v6.6.55
v6.6.56
v6.6.57
v6.6.58
v6.6.59
v6.6.6
v6.6.60
v6.6.61
v6.6.62
v6.6.63
v6.6.64
v6.6.65
v6.6.66
v6.6.67
v6.6.68
v6.6.69
v6.6.7
v6.6.70
v6.6.71
v6.6.72
v6.6.73
v6.6.74
v6.6.75
v6.6.8
v6.6.9
v6.7
v6.7-rc1
v6.7-rc2
v6.7-rc3
v6.7-rc4
v6.7-rc5
v6.7-rc6
v6.7-rc7
v6.7-rc8
v6.8
v6.8-rc1
v6.8-rc2
v6.8-rc3
v6.8-rc4
v6.8-rc5
v6.8-rc6
v6.8-rc7
v6.9
v6.9-rc1
v6.9-rc2
v6.9-rc3
v6.9-rc4
v6.9-rc5
v6.9-rc6
v6.9-rc7

Linux / Kernel

Package

Name
Kernel

Affected ranges

Type
ECOSYSTEM
Events
Introduced
6.2.0
Fixed
6.6.76
Type
ECOSYSTEM
Events
Introduced
6.7.0
Fixed
6.12.13
Type
ECOSYSTEM
Events
Introduced
6.13.0
Fixed
6.13.2