CVE-2025-21943

Source
https://cve.org/CVERecord?id=CVE-2025-21943
Import Source
https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2025-21943.json
JSON Data
https://api.test.osv.dev/v1/vulns/CVE-2025-21943
Downstream
Related
Published
2025-04-01T15:41:07.463Z
Modified
2026-03-20T12:41:15.152453Z
Severity
  • 4.7 (Medium) CVSS_V3 - CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H CVSS Calculator
Summary
gpio: aggregator: protect driver attr handlers against module unload
Details

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

gpio: aggregator: protect driver attr handlers against module unload

Both newdevicestore and deletedevicestore touch module global resources (e.g. gpioaggregatorlock). To prevent race conditions with module unload, a reference needs to be held.

Add trymoduleget() in these handlers.

For newdevicestore, this eliminates what appears to be the most dangerous scenario: if an id is allocated from gpioaggregatoridr but platformdeviceregister has not yet been called or completed, a concurrent module unload could fail to unregister/delete the device, leaving behind a dangling platform device/GPIO forwarder. This can result in various issues. The following simple reproducer demonstrates these problems:

#!/bin/bash while :; do # note: whether 'gpiochip0 0' exists or not does not matter. echo 'gpiochip0 0' > /sys/bus/platform/drivers/gpio-aggregator/new_device done & while :; do modprobe gpio-aggregator modprobe -r gpio-aggregator done & wait

Starting with the following warning, several kinds of warnings will appear and the system may become unstable:

------------[ cut here ]------------ listdel corruption, ffff888103e2e980->next is LISTPOISON1 (dead000000000100) WARNING: CPU: 1 PID: 1327 at lib/list_debug.c:56 __listdelentryvalidor_report+0xa3/0x120 [...] RIP: 0010:__listdelentryvalidor_report+0xa3/0x120 [...] Call Trace: <TASK> ? __listdelentryvalidor_report+0xa3/0x120 ? __warn.cold+0x93/0xf2 ? __listdelentryvalidorreport+0xa3/0x120 ? reportbug+0xe6/0x170 ? __irqworkqueuelocal+0x39/0xe0 ? handlebug+0x58/0x90 ? excinvalidop+0x13/0x60 ? asmexcinvalid_op+0x16/0x20 ? __listdelentryvalidorreport+0xa3/0x120 gpiodremovelookuptable+0x22/0x60 newdevicestore+0x315/0x350 [gpioaggregator] kernfsfopwriteiter+0x137/0x1f0 vfswrite+0x262/0x430 ksyswrite+0x60/0xd0 dosyscall64+0x6c/0x180 entrySYSCALL64afterhwframe+0x76/0x7e [...] </TASK> ---[ end trace 0000000000000000 ]---

Database specific
{
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2025/21xxx/CVE-2025-21943.json",
    "cna_assigner": "Linux"
}
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
828546e24280f721350a7a0dcc92416e917b4382
Fixed
fd6aa1f8cbe0979eb66ac32ebc231bf0b10a2117
Fixed
807789018186cf508ceb3a1f8f02935cd195717b
Fixed
9334c88fc2fbc6836b307d269fcc1744c69701c0
Fixed
d99dc8f7ea01ee1b21306e0eda8eb18a4af80db6
Fixed
8fb07fb1bba91d45846ed8605c3097fe67a7d54c
Fixed
56281a76b805b5ac61feb5d580139695a22f87f0
Fixed
12f65d1203507f7db3ba59930fe29a3b8eee9945

Database specific

source
"https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2025-21943.json"