Skip to content
OpenAdvisories
Medium · 4.7 CVE-2025-21943 EUVD-2025-9378GHSA-m7pp-g2rm-wrcq

gpio: aggregator: protect driver attr handlers against module unload

Published Apr 1, 2025 · Updated May 11, 2026 · Assigned by Linux

Vendor: Linux Product: Linux Package: kernel Package: linux Package: linux Package: linux-allwinner-5.19 Package: linux-aws Package: linux-aws-5.0 Package: linux-aws-5.11 Package: linux-aws-5.13 Package: linux-aws-5.15 Package: linux-aws-5.19 Package: linux-aws-5.3 Package: linux-aws-5.8 Package: linux-aws-6.2 Package: linux-aws-6.5 Package: linux-aws-6.8 Package: linux-aws-fips Package: linux-azure Package: linux-azure-5.11 Package: linux-azure-5.13 Package: linux-azure-5.15 Package: linux-azure-5.19 Package: linux-azure-5.3 Package: linux-azure-5.8 Package: linux-azure-6.11 Package: linux-azure-6.2 Package: linux-azure-6.5 Package: linux-azure-6.8 Package: linux-azure-edge Package: linux-azure-fde Package: linux-azure-fde-5.19 Package: linux-azure-fde-6.2 Package: linux-azure-fips Package: linux-azure-nvidia Package: linux-bluefield Package: linux-fips Package: linux-gcp Package: linux-gcp-5.11 Package: linux-gcp-5.13 Package: linux-gcp-5.15 Package: linux-gcp-5.19 Package: linux-gcp-5.3 Package: linux-gcp-5.8 Package: linux-gcp-6.11 Package: linux-gcp-6.2 Package: linux-gcp-6.5 Package: linux-gcp-6.8 Package: linux-gcp-fips Package: linux-gke Package: linux-gke-4.15 Package: linux-gke-5.15 Package: linux-gke-5.4 Package: linux-gkeop Package: linux-gkeop-5.15 Package: linux-gkeop-5.4 Package: linux-hwe Package: linux-hwe-5.11 Package: linux-hwe-5.13 Package: linux-hwe-5.15 Package: linux-hwe-5.19 Package: linux-hwe-5.8 Package: linux-hwe-6.11 Package: linux-hwe-6.2 Package: linux-hwe-6.5 Package: linux-hwe-6.8 Package: linux-hwe-edge Package: linux-ibm Package: linux-ibm-5.15 Package: linux-ibm-6.8 Package: linux-intel-5.13 Package: linux-intel-iot-realtime Package: linux-intel-iotg Package: linux-intel-iotg-5.15 Package: linux-kvm Package: linux-lowlatency Package: linux-lowlatency-hwe-5.15 Package: linux-lowlatency-hwe-5.19 Package: linux-lowlatency-hwe-6.11 Package: linux-lowlatency-hwe-6.2 Package: linux-lowlatency-hwe-6.5 Package: linux-lowlatency-hwe-6.8 Package: linux-nvidia Package: linux-nvidia-6.11 Package: linux-nvidia-6.2 Package: linux-nvidia-6.5 Package: linux-nvidia-6.8 Package: linux-nvidia-lowlatency Package: linux-nvidia-tegra Package: linux-nvidia-tegra-5.15 Package: linux-nvidia-tegra-igx Package: linux-oem Package: linux-oem-5.10 Package: linux-oem-5.13 Package: linux-oem-5.14 Package: linux-oem-5.17 Package: linux-oem-5.6 Package: linux-oem-6.0 Package: linux-oem-6.1 Package: linux-oem-6.11 Package: linux-oem-6.5 Package: linux-oem-6.8 Package: linux-oracle Package: linux-oracle-5.0 Package: linux-oracle-5.11 Package: linux-oracle-5.13 Package: linux-oracle-5.15 Package: linux-oracle-5.3 Package: linux-oracle-5.8 Package: linux-oracle-6.5 Package: linux-oracle-6.8 Package: linux-raspi Package: linux-raspi-realtime Package: linux-raspi2 Package: linux-realtime Package: linux-realtime-6.8 Package: linux-riscv Package: linux-riscv-5.11 Package: linux-riscv-5.15 Package: linux-riscv-5.19 Package: linux-riscv-5.8 Package: linux-riscv-6.5 Package: linux-riscv-6.8 Package: linux-starfive-5.19 Package: linux-starfive-6.2 Package: linux-starfive-6.5 Package: linux-vmware Package: linux-xilinx Package: linux-xilinx-zynqmp Platform: Linux Ecosystem: Azure Linux Ecosystem: Debian Ecosystem: Ubuntu

Description

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 ]---

Affected products

VendorProductAffectedFixed
Linux Linux 5.8 5.10.235

Fixed in Linux distributions

Distributions backport fixes, so the version that fixes this vulnerability differs per release — upgrade to at least the version shown. From the distributions' security trackers and advisories.

ReleasePackageFixed inAdvisory
Debian 14 linux 6.12.19-1 —
Debian 13 linux 6.12.19-1 —
Debian 12 linux 6.1.133-1 DSA-5900-1
Debian 11 linux 5.10.237-1 DLA-4178-1
Debian 11 linux-6.1 6.1.137-1~deb11u1 DLA-4193-1
ReleasePackageFixed inAdvisory
Ubuntu Nvidia-BlueField 22.04 LTS linux-bluefield 5.15.0-1066.68 —
Ubuntu 24.04 LTS linux 6.8.0-62.65 USN-7595-1
Ubuntu 24.04 LTS linux-aws 6.8.0-1030.32 USN-7595-1
Ubuntu 24.04 LTS linux-azure 6.8.0-1030.35 USN-7596-1
Ubuntu 24.04 LTS linux-azure-6.11 6.11.0-1018.18~24.04.1 USN-7628-1
Ubuntu 24.04 LTS linux-azure-nvidia 6.8.0-1018.19 USN-7596-2
Ubuntu 24.04 LTS linux-gcp 6.8.0-1031.33 USN-7595-5
Ubuntu 24.04 LTS linux-gcp-6.11 6.11.0-1016.16~24.04.1 USN-7605-1
Ubuntu 24.04 LTS linux-gke 6.8.0-1026.30 USN-7595-1
Ubuntu 24.04 LTS linux-gkeop 6.8.0-1013.15 USN-7595-1
Ubuntu 24.04 LTS linux-hwe-6.11 6.11.0-28.28~24.04.1 USN-7605-1
Ubuntu 24.04 LTS linux-ibm 6.8.0-1027.27 USN-7595-1
Ubuntu 24.04 LTS linux-lowlatency 6.8.0-62.65.1 USN-7595-1
Ubuntu 24.04 LTS linux-lowlatency-hwe-6.11 6.11.0-1015.16~24.04.2 USN-7605-2
Ubuntu 24.04 LTS linux-nvidia 6.8.0-1029.32 USN-7595-1
Ubuntu 24.04 LTS linux-nvidia-6.11 6.11.0-1012.12 —
Ubuntu 24.04 LTS linux-nvidia-lowlatency 6.8.0-1029.32.1 USN-7595-1
Ubuntu 24.04 LTS linux-nvidia-tegra 6.8.0-1008.8 —
Ubuntu 24.04 LTS linux-oem-6.11 6.11.0-1024.24 USN-7606-1
Ubuntu 24.04 LTS linux-oem-6.8 6.8.0-1029.29 USN-7595-1
Ubuntu 24.04 LTS linux-oracle 6.8.0-1027.28 USN-7595-4
Ubuntu 24.04 LTS linux-raspi 6.8.0-1029.33 USN-7595-4
Ubuntu 24.04 LTS linux-riscv +2 No fix yet —
Ubuntu 24.04 LTS linux-xilinx 6.8.0-1017.18 —
Ubuntu 22.04 LTS linux +1 5.15.0-140.150 USN-7510-1
Ubuntu 22.04 LTS linux-aws 5.15.0-1084.91 USN-7510-7
Ubuntu 22.04 LTS linux-aws-6.8 6.8.0-1030.32~22.04.1 USN-7595-1
Ubuntu 22.04 LTS linux-azure 5.15.0-1089.98 USN-7510-3
Ubuntu 22.04 LTS linux-azure-6.8 6.8.0-1030.35~22.04.1 USN-7596-1
Ubuntu 22.04 LTS linux-azure-fde 5.15.0-1089.98.1 —
Ubuntu 22.04 LTS linux-gcp 5.15.0-1083.92 USN-7511-1
Ubuntu 22.04 LTS linux-gcp-6.8 6.8.0-1031.33~22.04.1 USN-7595-5
Ubuntu 22.04 LTS linux-gke +1 5.15.0-1081.87 USN-7511-3, USN-7510-1
Ubuntu 22.04 LTS linux-gkeop 5.15.0-1066.74 USN-7510-1
Ubuntu 22.04 LTS linux-hwe-6.8 6.8.0-64.67~22.04.1 USN-7653-1
Ubuntu 22.04 LTS linux-ibm 5.15.0-1076.79 USN-7510-1
Ubuntu 22.04 LTS linux-ibm-6.8 6.8.0-1027.27~22.04.1 —
Ubuntu 22.04 LTS linux-intel-iotg 5.15.0-1079.85 USN-7510-1
Ubuntu 22.04 LTS linux-kvm 5.15.0-1080.85 USN-7510-1
Ubuntu 22.04 LTS linux-lowlatency-hwe-6.8 6.8.0-62.65.1~22.04.1 USN-7595-1
Ubuntu 22.04 LTS linux-nvidia 5.15.0-1078.79 USN-7510-1
Ubuntu 22.04 LTS linux-nvidia-6.8 6.8.0-1029.32~22.04.1 USN-7595-1
Ubuntu 22.04 LTS linux-nvidia-tegra 5.15.0-1037.37 USN-7510-3
Ubuntu 22.04 LTS linux-nvidia-tegra-igx 5.15.0-1026.26 USN-7510-7
Ubuntu 22.04 LTS linux-oracle-6.8 6.8.0-1027.28~22.04.1 USN-7595-4
Ubuntu 22.04 LTS linux-raspi 5.15.0-1078.81 USN-7510-7
Ubuntu 22.04 LTS linux-riscv +32 No fix yet —
Ubuntu 22.04 LTS linux-riscv-6.8 6.8.0-62.65~22.04.1 —
Ubuntu 22.04 LTS linux-xilinx-zynqmp 5.15.0-1050.54 USN-7602-1
Ubuntu 20.04 LTS linux-aws-5.15 5.15.0-1084.91~20.04.1 USN-7510-8
Ubuntu 20.04 LTS linux-azure-5.15 5.15.0-1089.98~20.04.1 USN-7510-3
Ubuntu 20.04 LTS linux-gcp-5.15 5.15.0-1083.92~20.04.1 USN-7512-1
Ubuntu 20.04 LTS linux-gke +28 No fix yet —
Ubuntu 20.04 LTS linux-ibm-5.15 5.15.0-1076.79~20.04.1 USN-7510-1
Ubuntu 20.04 LTS linux-intel-iotg-5.15 5.15.0-1079.85~20.04.1 USN-7510-7
Ubuntu 20.04 LTS linux-lowlatency-hwe-5.15 5.15.0-140.150~20.04.1 USN-7510-1
Ubuntu 20.04 LTS linux-oracle-5.15 5.15.0-1081.87~20.04.1 USN-7510-1
Ubuntu 20.04 LTS linux-riscv-5.15 5.15.0-1079.83~20.04.1 —
Ubuntu 18.04 LTS linux-gcp +14 No fix yet —
Show 7 more (older releases, extended support, other products)
ReleasePackageFixed inAdvisory
Ubuntu 16.04 LTS linux-hwe-edge No fix yet —
Ubuntu Pro Realtime 24.04 LTS linux-raspi-realtime 6.8.0-2024.25 USN-7595-3
Ubuntu Pro Realtime 24.04 LTS linux-realtime 6.8.1-1023.24 USN-7595-2
Ubuntu Pro Realtime 22.04 LTS linux-intel-iot-realtime 5.15.0-1077.79 USN-7510-4
Ubuntu Pro Realtime 22.04 LTS linux-realtime 5.15.0-1084.93 USN-7510-4
Ubuntu Pro Realtime 22.04 LTS linux-realtime-6.8 6.8.1-1023.24~22.04.1 —
Ubuntu Pro FIPS-updates 24.04 LTS linux-fips 6.8.0-78.78+fips1 —
Ubuntu Pro FIPS-updates 22.04 LTS linux-aws-fips 5.15.0-1084.91+fips1 USN-7510-6
Ubuntu Pro FIPS-updates 22.04 LTS linux-azure-fips 5.15.0-1089.98+fips1 USN-7510-5
Ubuntu Pro FIPS-updates 22.04 LTS linux-fips 5.15.0-140.150+fips1 USN-7510-2
Ubuntu Pro FIPS-updates 22.04 LTS linux-gcp-fips 5.15.0-1083.92+fips1 USN-7511-2
Ubuntu Pro FIPS-preview 22.04 LTS linux-fips +3 No fix yet —
Ubuntu Pro 20.04 LTS linux-hwe-5.15 5.15.0-142.152~20.04.1 USN-7593-1
Ubuntu Pro 20.04 LTS linux-nvidia-tegra-5.15 5.15.0-1039.39~20.04.1 —
ReleasePackageFixed inAdvisory
SLES 15 SP7 kernel-64kb +6 6.4.0-150700.53.3.1 SUSE-SU-2025:01951-1
SLES 15 SP7 kernel-azure +2 6.4.0-150700.20.3.1 SUSE-SU-2025:01967-1
SLES 15 SP7 kernel-default-base 6.4.0-150700.53.3.1.150700.17.2.1 SUSE-SU-2025:01951-1
SLES 15 SP6 kernel-64kb +6 6.4.0-150600.23.50.1 SUSE-SU-2025:01614-1
SLES 15 SP6 kernel-azure +2 6.4.0-150600.8.37.1 SUSE-SU-2025:01707-1
SLES 15 SP6 kernel-coco +3 6.4.0-15061.21.coco15sp6.1 SUSE-SU-2025:01919-1
SLES 15 SP6 kernel-default-base 6.4.0-150600.23.50.1.150600.12.22.1 SUSE-SU-2025:01614-1
Show 5 more (older releases, extended support, other products)
ReleasePackageFixed inAdvisory
SLE Micro 6.1 kernel-default-base 6.4.0-28.1.21.6 SUSE-SU-2025:20270-1
SLE Micro 6.1 kernel-livepatch-MICRO-6-0-RT_Update_7 1-1.3 SUSE-SU-2025:20283-1
SLE Micro 6.1 kernel-livepatch-MICRO-6-0_Update_6 1-3.1 SUSE-SU-2025:20270-1
SLE Micro 6.1 kernel-rt +1 6.4.0-30.1 SUSE-SU-2025:20283-1
SLE Micro 6.1 kernel-source +2 6.4.0-28.1 SUSE-SU-2025:20270-1
SLE Micro 6.0 kernel-default-base 6.4.0-28.1.21.6 SUSE-SU-2025:20192-1
SLE Micro 6.0 kernel-livepatch-MICRO-6-0-RT_Update_7 1-1.3 SUSE-SU-2025:20206-1
SLE Micro 6.0 kernel-livepatch-MICRO-6-0_Update_6 1-3.1 SUSE-SU-2025:20192-1
SLE Micro 6.0 kernel-rt +1 6.4.0-30.1 SUSE-SU-2025:20206-1
SLE Micro 6.0 kernel-source +2 6.4.0-28.1 SUSE-SU-2025:20192-1
SLE Live Patching 15 SP7 kernel-default 6.4.0-150700.53.3.1 SUSE-SU-2025:01951-1
SLE Live Patching 15 SP7 kernel-livepatch-SLE15-SP7_Update_1 1-150700.15.3.1 SUSE-SU-2025:01951-1
SLE Live Patching 15 SP6 kernel-default 6.4.0-150600.23.50.1 SUSE-SU-2025:01614-1
SLE Live Patching 15 SP6 kernel-livepatch-SLE15-SP6-RT_Update_11 1-150600.1.3.2 SUSE-SU-2025:01964-1
SLE Live Patching 15 SP6 kernel-livepatch-SLE15-SP6_Update_11 1-150600.13.3.1 SUSE-SU-2025:01614-1
SUSE Real Time Module 15 SP6 kernel-rt +3 6.4.0-150600.10.39.1 SUSE-SU-2025:01964-1
ReleasePackageFixed inAdvisory
openSUSE Leap 15.6 dtb-aarch64 +10 6.4.0-150600.23.50.1 SUSE-SU-2025:01614-1
openSUSE Leap 15.6 kernel-azure +2 6.4.0-150600.8.37.1 SUSE-SU-2025:01707-1
openSUSE Leap 15.6 kernel-default-base 6.4.0-150600.23.50.1.150600.12.22.1 SUSE-SU-2025:01614-1
openSUSE Leap 15.6 kernel-rt +3 6.4.0-150600.10.39.1 SUSE-SU-2025:01964-1

Azure Linux

ReleasePackageFixed inAdvisory
Azure Linux 3 kernel 6.6.85.1-2 —
Azure Linux 2 (CBL-Mariner) kernel 5.15.180.1-1 —

Oracle Linux

ReleasePackageFixed inAdvisory
Oracle Linux 9 kernel-uek +34 6.12.0-101.33.4.3.el10uek ELSA-2025-20530, ELSA-2025-20480

Advisories 42

References