CVE-2024-36899 json
gpiolib: cdev: Fix use after free in lineinfo_changed_notify
published 2024-05-30 2 y ago modified 2026-10-15 25 d ago also EUVD-2024-36388
- cvss
- 7.0
- version 3.1, NVD
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.2%
- EPSS 0.2% chance of exploitation in 30 days, percentile 7%
- public exploits
- 0
- none known
Summary
In the Linux kernel, the following vulnerability has been resolved:
gpiolib: cdev: Fix use after free in lineinfo_changed_notify
The use-after-free issue occurs as follows: when the GPIO chip device file is being closed by invoking gpio_chrdev_release(), watched_lines is freed by bitmap_free(), but the unregistration of lineinfo_changed_nb notifier chain failed due to waiting write rwsem. Additionally, one of the GPIO chip's lines is also in the release process and holds the notifier chain's read rwsem. Consequently, a race condition leads to the use-after-free of watched_lines.
Here is the typical stack when issue happened:
[free] gpio_chrdev_release() --> bitmap_free(cdev->watched_lines) <-- freed --> blocking_notifier_chain_unregister() --> down_write(&nh->rwsem) <-- waiting rwsem --> __down_write_common() --> rwsem_down_write_slowpath() --> schedule_preempt_disabled() --> schedule()
[use] st54spi_gpio_dev_release() --> gpio_free() --> gpiod_free() --> gpiod_free_commit() --> gpiod_line_state_notify() --> blocking_notifier_call_chain() --> down_read(&nh->rwsem); <-- held rwsem --> notifier_call_chain() --> lineinfo_changed_notify() --> test_bit(xxxx, cdev->watched_lines) <-- use after free
The side effect of the use-after-free issue is that a GPIO line event is being generated for userspace where it shouldn't. However, since the chrdev is being closed, userspace won't have the chance to read that event anyway.
To fix the issue, call the bitmap_free() function after the unregistration of lineinfo_changed_nb notifier chain.
Patch / fix
- Linux Linux 5.10.234, 5.15.177, 6.1.127, 6.6.31, 6.8.10, 6.9
- Siemens SIMATIC S7-1500 TM MFP - GNU/Linux subsystem V1.1.1
- linux Debian 12 6.1.128-1
- linux Debian 14, Debian 13 6.8.11-1
debian advisories DEBIAN-CVE-2024-36899
- linux Ubuntu 22.04 LTS 5.15.0-135.146
- linux Ubuntu 24.04 LTS 6.8.0-40.40
- linux-aws Ubuntu 22.04 LTS 5.15.0-1080.87
- linux-aws Ubuntu 24.04 LTS 6.8.0-1013.14
- linux-gcp Ubuntu 22.04 LTS 5.15.0-1079.88
- linux-gcp Ubuntu 24.04 LTS 6.8.0-1012.13
- linux-gke Ubuntu 22.04 LTS 5.15.0-1077.83
- linux-gke Ubuntu 24.04 LTS 6.8.0-1008.11
ubuntu advisories UBUNTU-CVE-2024-36899
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 RHEL 9 5.14.0-427.37.1.el9_4
- rv RHEL 9 5.14.0-427.37.1.el9_4
- perf RHEL 9 5.14.0-427.37.1.el9_4
- rtla RHEL 9 5.14.0-427.37.1.el9_4
- bpftool RHEL 9 7.3.0-427.37.1.el9_4
- libperf RHEL 9 5.14.0-427.37.1.el9_4
- kernel-rt RHEL 9 5.14.0-427.37.1.el9_4
- kernel-64k RHEL 9 5.14.0-427.37.1.el9_4
red hat advisories RHSA-2024:7004RHSA-2024:7005RHSA-2024:6997
- kernel-rt Linux Micro 6.0 6.4.0-9.1
- kernel-source-rt Linux Micro 6.0 6.4.0-9.1
- kernel-source Linux Micro 6.0 6.4.0-18.1
- kernel-default Linux Micro 6.0 6.4.0-18.1
- kernel-kvmsmall Linux Micro 6.0 6.4.0-18.1
- kernel-default-base Linux Micro 6.0 6.4.0-17.1.1.51
- kernel-rt Real Time Module 15 SP6, openSUSE Leap 15.6 6.4.0-150600.10.5.1
- kernel-syms-rt Real Time Module 15 SP6, openSUSE Leap 15.6 6.4.0-150600.10.5.1
suse advisories SUSE-SU-2025:20028-1SUSE-SU-2025:20008-1SUSE-SU-2025:0266-1SUSE-SU-2025:0264-1SUSE-SU-2025:0261-1SUSE-SU-2025:0260-1
- kernel AlmaLinux 9 5.14.0-427.37.1.el9_4
- rv AlmaLinux 9 5.14.0-427.37.1.el9_4
- perf AlmaLinux 9 5.14.0-427.37.1.el9_4
- rtla AlmaLinux 9 5.14.0-427.37.1.el9_4
- bpftool AlmaLinux 9 7.3.0-427.37.1.el9_4
- libperf AlmaLinux 9 5.14.0-427.37.1.el9_4
- kernel-rt AlmaLinux 9 5.14.0-427.37.1.el9_4
- kernel-64k AlmaLinux 9 5.14.0-427.37.1.el9_4
almalinux advisories ALSA-2024:6997
- git.kernel.org/stable/c/2dfbb920a89bdc58087672ad5325dc6c588b6860 commit
- git.kernel.org/stable/c/2d008d4961b039d2edce8976289773961b7e5fb5 commit
- git.kernel.org/stable/c/d38c49f7bdf14381270736299e2ff68ec248a017 commit
- git.kernel.org/stable/c/95ca7c90eaf5ea8a8460536535101e3e81160e2a commit
- git.kernel.org/stable/c/ca710b5f40b8b16fdcad50bebd47f50e4c62d239 commit
- git.kernel.org/stable/c/02f6b0e1ec7e0e7d059dddc893645816552039da 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-2024-36899 updated cvss 6.7
kernel: gpiolib: cdev: Fix use after free in lineinfo_changed_notify
-
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 moreaffected: no fix planned “Out of support scope”
-
Red Hat Enterprise Linux 9 kernel-rt, kernel-rt-kvm, kernel-rt-core, kernel-rt-modules, kernel-rt-debug-kvm, kernel-rt-debug-core, +12 moreaffected: no fix available
-
Red Hat CodeReady Linux Builder EUS (v.9.2) kernel-debuginfo-common-s390x 5.14.0-284.85.1.el9_2, kernel-debuginfo-common-x86_64 5.14.0-284.85.1.el9_2, kernel-debuginfo-common-aarch64 5.14.0-284.85.1.el9_2, kernel-debuginfo-common-ppc64le 5.14.0-284.85.1.el9_2fixed: vendor fix RHSA-2024:7004
-
Red Hat Enterprise Linux AppStream (v. 9) rv 5.14.0-427.37.1.el9_4, perf 5.14.0-427.37.1.el9_4, rtla 5.14.0-427.37.1.el9_4, kernel-devel-matched 5.14.0-427.37.1.el9_4, kernel-64k-devel-matched 5.14.0-427.37.1.el9_4, kernel-debug-devel-matched 5.14.0-427.37.1.el9_4, +6 morefixed: vendor fix RHSA-2024:6997
-
Red Hat Enterprise Linux AppStream EUS (v.9.2) perf 5.14.0-284.85.1.el9_2, rtla 5.14.0-284.85.1.el9_2, kernel-devel-matched 5.14.0-284.85.1.el9_2, kernel-64k-devel-matched 5.14.0-284.85.1.el9_2, kernel-debug-devel-matched 5.14.0-284.85.1.el9_2, kernel-debuginfo-common-s390x 5.14.0-284.85.1.el9_2, +5 morefixed: vendor fix RHSA-2024:7004
-
Red Hat Enterprise Linux BaseOS (v. 9) bpftool 7.3.0-427.37.1.el9_4, kernel 5.14.0-427.37.1.el9_4, kernel-64k 5.14.0-427.37.1.el9_4, kernel-core 5.14.0-427.37.1.el9_4, kernel-tools 5.14.0-427.37.1.el9_4, python3-perf 5.14.0-427.37.1.el9_4, +28 morefixed: vendor fix RHSA-2024:6997
-
Red Hat Enterprise Linux BaseOS EUS (v.9.2) bpftool 7.0.0-284.85.1.el9_2, kernel 5.14.0-284.85.1.el9_2, kernel-64k 5.14.0-284.85.1.el9_2, kernel-core 5.14.0-284.85.1.el9_2, kernel-tools 5.14.0-284.85.1.el9_2, python3-perf 5.14.0-284.85.1.el9_2, +28 morefixed: vendor fix RHSA-2024:7004
-
Red Hat Enterprise Linux CRB (v. 9) libperf 5.14.0-427.37.1.el9_4, kernel-debuginfo-common-s390x 5.14.0-427.37.1.el9_4, kernel-debuginfo-common-x86_64 5.14.0-427.37.1.el9_4, kernel-debuginfo-common-aarch64 5.14.0-427.37.1.el9_4, kernel-debuginfo-common-ppc64le 5.14.0-427.37.1.el9_4 Red Hat Enterprise Linux NFV (v. 9) kernel-rt 5.14.0-427.37.1.el9_4, kernel-rt-kvm 5.14.0-427.37.1.el9_4, kernel-rt-core 5.14.0-427.37.1.el9_4, kernel-rt-modules 5.14.0-427.37.1.el9_4, kernel-rt-debug-kvm 5.14.0-427.37.1.el9_4, kernel-rt-debug-core 5.14.0-427.37.1.el9_4, +6 morefixed: vendor fix RHSA-2024:6997
show 3 moreshow fewer
-
Red Hat Enterprise Linux Real Time EUS (v.9.2) kernel-rt 5.14.0-284.85.1.rt14.370.el9_2, kernel-rt-core 5.14.0-284.85.1.rt14.370.el9_2, kernel-rt-modules 5.14.0-284.85.1.rt14.370.el9_2, kernel-rt-debug-core 5.14.0-284.85.1.rt14.370.el9_2, kernel-rt-modules-core 5.14.0-284.85.1.rt14.370.el9_2, kernel-rt-debug-modules 5.14.0-284.85.1.rt14.370.el9_2, +4 more Red Hat Enterprise Linux Real Time for NFV EUS (v.9.2) kernel-rt 5.14.0-284.85.1.rt14.370.el9_2, kernel-rt-kvm 5.14.0-284.85.1.rt14.370.el9_2, kernel-rt-core 5.14.0-284.85.1.rt14.370.el9_2, kernel-rt-modules 5.14.0-284.85.1.rt14.370.el9_2, kernel-rt-debug-kvm 5.14.0-284.85.1.rt14.370.el9_2, kernel-rt-debug-core 5.14.0-284.85.1.rt14.370.el9_2, +6 morefixed: vendor fix RHSA-2024:7005
-
Red Hat Enterprise Linux RT (v. 9) kernel-rt 5.14.0-427.37.1.el9_4, kernel-rt-core 5.14.0-427.37.1.el9_4, kernel-rt-modules 5.14.0-427.37.1.el9_4, kernel-rt-debug-core 5.14.0-427.37.1.el9_4, kernel-rt-modules-core 5.14.0-427.37.1.el9_4, kernel-rt-debug-modules 5.14.0-427.37.1.el9_4, +4 morefixed: vendor fix RHSA-2024:6997
-
Red Hat Enterprise Linux 8 perf, kernel, bpftool, kernel-rt, kernel-core, kernel-tools, +29 morenot 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 ICSA-24-102-01 updated cvss 7.0
Siemens SIMATIC S7-1500 TM MFP
-
Siemens SIMATIC S7-1500 TM MFP - GNU/Linux subsystemaffected: mitigation, no fix available
Facts from CISA's republication of the vendor's own advisory (CSAF); the linked advisory is the authoritative source. CISA notification · csaf
CISA SSVC
- Exploitation
- none
- Automatable
- no
- Technical impact
- partial
- Assessed
- 2 y ago
Exploit prediction
0.18% chance of exploitation in the next 30 days, higher than 7% of all scored CVEs (FIRST EPSS, 2026-11-08).
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| NVD | 3.1 | 7.0 | CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H |
Affected products
- Linux Linux
- Siemens SIMATIC S7-1500 TM MFP - GNU/Linux subsystem
Classification
- Weakness
- Technology feeds
References
- git.kernel.org /stable/c/2dfbb920a89bdc58087672ad5325dc6c588b6860
- git.kernel.org /stable/c/2d008d4961b039d2edce8976289773961b7e5fb5
- git.kernel.org /stable/c/d38c49f7bdf14381270736299e2ff68ec248a017
-
git.kernel.org
/stable/c/95ca7c90eaf5ea8a8460536535101e3e81160e2a
patch
-
git.kernel.org
/stable/c/ca710b5f40b8b16fdcad50bebd47f50e4c62d239
patch
-
git.kernel.org
/stable/c/02f6b0e1ec7e0e7d059dddc893645816552039da
patch
- lists.debian.org /debian-lts-announce/2025/03/msg00001.html
- lists.debian.org /debian-lts-announce/2025/03/msg00002.html
- cert-portal.siemens.com /productcert/html/ssa-265688.html
Sources
- CVE List CVE-2024-36899
- NVD CVE-2024-36899
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.