CVE-2025-21943 json
gpio: aggregator: protect driver attr handlers against module unload
published 2025-04-01 19 mo ago modified 2026-06-17 4 mo ago also EUVD-2025-9378
- cvss
- 4.7
- version 3.1, CNA
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.2%
- EPSS 0.2% chance of exploitation in 30 days, percentile 6%
- public exploits
- 0
- none known
Summary
In the Linux kernel, the following vulnerability has been resolved:
gpio: aggregator: protect driver attr handlers against module unload
Both new_device_store and delete_device_store touch module global resources (e.g. gpio_aggregator_lock). To prevent race conditions with module unload, a reference needs to be held.
Add try_module_get() in these handlers.
For new_device_store, this eliminates what appears to be the most dangerous scenario: if an id is allocated from gpio_aggregator_idr but platform_device_register 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 ]------------ list_del corruption, ffff888103e2e980->next is LIST_POISON1 (dead000000000100) WARNING: CPU: 1 PID: 1327 at lib/list_debug.c:56 __list_del_entry_valid_or_report+0xa3/0x120 [...] RIP: 0010:__list_del_entry_valid_or_report+0xa3/0x120 [...] Call Trace: <TASK> ? __list_del_entry_valid_or_report+0xa3/0x120 ? __warn.cold+0x93/0xf2 ? __list_del_entry_valid_or_report+0xa3/0x120 ? report_bug+0xe6/0x170 ? __irq_work_queue_local+0x39/0xe0 ? handle_bug+0x58/0x90 ? exc_invalid_op+0x13/0x60 ? asm_exc_invalid_op+0x16/0x20 ? __list_del_entry_valid_or_report+0xa3/0x120 gpiod_remove_lookup_table+0x22/0x60 new_device_store+0x315/0x350 [gpio_aggregator] kernfs_fop_write_iter+0x137/0x1f0 vfs_write+0x262/0x430 ksys_write+0x60/0xd0 do_syscall_64+0x6c/0x180 entry_SYSCALL_64_after_hwframe+0x76/0x7e [...] </TASK> ---[ end trace 0000000000000000 ]---
Patch / fix
- Linux Linux 5.10.235, 5.15.179, 6.1.131, 6.6.83, 6.12.19, 6.13.7, 6.14
- linux Debian 12 6.1.133-1
- linux Debian 14, Debian 13 6.12.19-1
debian advisories DEBIAN-CVE-2025-21943
- linux Ubuntu 22.04 LTS 5.15.0-140.150
- linux Ubuntu 24.04 LTS 6.8.0-62.65
- linux-aws Ubuntu 22.04 LTS 5.15.0-1084.91
- linux-aws Ubuntu 24.04 LTS 6.8.0-1030.32
- linux-gcp Ubuntu 22.04 LTS 5.15.0-1083.92
- linux-gcp Ubuntu 24.04 LTS 6.8.0-1031.33
- linux-gke Ubuntu 22.04 LTS 5.15.0-1081.87
- linux-gke Ubuntu 24.04 LTS 6.8.0-1026.30
ubuntu advisories UBUNTU-CVE-2025-21943
Ubuntu security data © Canonical Ltd., from https://github.com/canonical/ubuntu-security-notices via OSV; changed: normalised to fixed package versions per release. CC BY-SA 4.0
- kernel-azure SLE Module for Public Cloud 15 SP7 6.4.0-150700.20.3.1
- kernel-syms-azure SLE Module for Public Cloud 15 SP7 6.4.0-150700.20.3.1
- kernel-source-azure SLE Module for Public Cloud 15 SP7 6.4.0-150700.20.3.1
- kernel-rt Real Time Module 15 SP6, openSUSE Leap 15.6 6.4.0-150600.10.39.1
- kernel-syms-rt Real Time Module 15 SP6, openSUSE Leap 15.6 6.4.0-150600.10.39.1
- kernel-rt_debug Real Time Module 15 SP6, openSUSE Leap 15.6 6.4.0-150600.10.39.1
- kernel-source-rt Real Time Module 15 SP6, openSUSE Leap 15.6 6.4.0-150600.10.39.1
- kernel-64kb SLE Module for Basesystem 15 SP7 6.4.0-150700.53.3.1
suse advisories SUSE-SU-2025:01967-1SUSE-SU-2025:01964-1SUSE-SU-2025:01951-1SUSE-SU-2025:01919-1SUSE-SU-2025:01707-1SUSE-SU-2025:01614-1
- kernel CBL-Mariner 2.0 5.15.180.1-1
- kernel Azure Linux 3.0 6.6.85.1-2
azure linux advisories AZL-59748AZL-59912
Azure Linux vulnerability data, Copyright (c) Microsoft Corporation, from https://github.com/microsoft/AzureLinuxVulnerabilityData via OSV, under the MIT licence; changed: normalised to fixed package versions per release. MIT
- git.kernel.org/stable/c/fd6aa1f8cbe0979eb66ac32ebc231bf0b10a2117 commit
- git.kernel.org/stable/c/807789018186cf508ceb3a1f8f02935cd195717b commit
- git.kernel.org/stable/c/9334c88fc2fbc6836b307d269fcc1744c69701c0 commit
- git.kernel.org/stable/c/d99dc8f7ea01ee1b21306e0eda8eb18a4af80db6 commit
- git.kernel.org/stable/c/8fb07fb1bba91d45846ed8605c3097fe67a7d54c commit
- git.kernel.org/stable/c/56281a76b805b5ac61feb5d580139695a22f87f0 commit
- git.kernel.org/stable/c/12f65d1203507f7db3ba59930fe29a3b8eee9945 commit
Vendor advisories
What the vendors themselves say about their products: affected, fixed or not affected, and what to do.
red hat product security vex CVE-2025-21943 updated cvss 4.7
kernel: gpio: aggregator: protect driver attr handlers against module unload
-
Red Hat Enterprise Linux 6 perf, kernel, python-perf, kernel-kdump, kernel-firmware, kernel-bootwrapper, +1 more Red Hat Enterprise Linux 7 perf, kernel, bpftool, kernel-rt, python-perf, kernel-kdump, +8 more Red Hat Enterprise Linux 8 perf, kernel, bpftool, kernel-rt, kernel-core, kernel-tools, +29 more Red Hat Enterprise Linux 9 rv, perf, rtla, kernel, bpftool, libperf, +83 more Red Hat Enterprise Linux 10 kernelnot affected: vulnerable code not present
Red Hat CSAF VEX © Red Hat, Inc., from https://security.access.redhat.com/data/csaf/v2/vex/; changed: reduced to product statuses and remediations. CC BY 4.0 · csaf
CISA SSVC
- Exploitation
- none
- Automatable
- no
- Technical impact
- partial
- Assessed
- 13 mo ago
Exploit prediction
0.17% chance of exploitation in the next 30 days, higher than 6% of all scored CVEs (FIRST EPSS, 2026-11-08).
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CISA ADP | 3.1 | 4.7 | CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H |
| NVD | 3.1 | 4.7 | CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H |
| CNA | 3.1 | 4.7 | CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H |
Affected products
- Linux Linux
Classification
- Weakness
-
- CWE-362 Concurrent Execution using Shared Resource with Improper Synchronization
- Technology feeds
References
-
git.kernel.org
/stable/c/fd6aa1f8cbe0979eb66ac32ebc231bf0b10a2117
patch
-
git.kernel.org
/stable/c/807789018186cf508ceb3a1f8f02935cd195717b
patch
-
git.kernel.org
/stable/c/9334c88fc2fbc6836b307d269fcc1744c69701c0
patch
-
git.kernel.org
/stable/c/d99dc8f7ea01ee1b21306e0eda8eb18a4af80db6
patch
-
git.kernel.org
/stable/c/8fb07fb1bba91d45846ed8605c3097fe67a7d54c
patch
-
git.kernel.org
/stable/c/56281a76b805b5ac61feb5d580139695a22f87f0
patch
-
git.kernel.org
/stable/c/12f65d1203507f7db3ba59930fe29a3b8eee9945
patch
- lists.debian.org /debian-lts-announce/2025/05/msg00045.html
- lists.debian.org /debian-lts-announce/2025/05/msg00030.html
Sources
- CVE List CVE-2025-21943
- NVD CVE-2025-21943
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.