CVE-2025-21664 json
dm thin: make get_first_thin use rcu-safe list first function
published 2025-01-21 21 mo ago modified 2026-10-15 24 d ago also EUVD-2025-2613
- cvss
- 7.8
- 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 14%
- public exploits
- 0
- none known
Summary
In the Linux kernel, the following vulnerability has been resolved:
dm thin: make get_first_thin use rcu-safe list first function
The documentation in rculist.h explains the absence of list_empty_rcu() and cautions programmers against relying on a list_empty() -> list_first() sequence in RCU safe code. This is because each of these functions performs its own READ_ONCE() of the list head. This can lead to a situation where the list_empty() sees a valid list entry, but the subsequent list_first() sees a different view of list head state after a modification.
In the case of dm-thin, this author had a production box crash from a GP fault in the process_deferred_bios path. This function saw a valid list head in get_first_thin() but when it subsequently dereferenced that and turned it into a thin_c, it got the inside of the struct pool, since the list was now empty and referring to itself. The kernel on which this occurred printed both a warning about a refcount_t being saturated, and a UBSAN error for an out-of-bounds cpuid access in the queued spinlock, prior to the fault itself. When the resulting kdump was examined, it was possible to see another thread patiently waiting in thin_dtr's synchronize_rcu.
The thin_dtr call managed to pull the thin_c out of the active thins list (and have it be the last entry in the active_thins list) at just the wrong moment which lead to this crash.
Fortunately, the fix here is straight forward. Switch get_first_thin() function to use list_first_or_null_rcu() which performs just a single READ_ONCE() and returns NULL if the list is already empty.
This was run against the devicemapper test suite's thin-provisioning suites for delete and suspend and no regressions were observed.
Patch / fix
- Linux Linux 5.4.290, 5.10.234, 5.15.177, 6.1.125, 6.6.72, 6.12.10, 6.13
- linux Debian 12 6.1.128-1
- linux Debian 14, Debian 13 6.12.10-1
debian advisories DEBIAN-CVE-2025-21664
- linux Ubuntu 20.04 LTS 5.4.0-211.231
- linux Ubuntu 22.04 LTS 5.15.0-135.146
- linux Ubuntu 24.04 LTS 6.8.0-60.63
- linux-aws Ubuntu 20.04 LTS 5.4.0-1142.152
- linux-aws Ubuntu 22.04 LTS 5.15.0-1080.87
- linux-aws Ubuntu 24.04 LTS 6.8.0-1029.31
- linux-gcp Ubuntu 20.04 LTS 5.4.0-1145.154
- linux-gcp Ubuntu 22.04 LTS 5.15.0-1079.88
ubuntu advisories UBUNTU-CVE-2025-21664
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-rt Linux Micro 6.1, Linux Micro 6.0 6.4.0-25.1
- kernel-source-rt Linux Micro 6.1, Linux Micro 6.0 6.4.0-25.1
- kernel-livepatch-MICRO-6-0-RT_Update_5 Linux Micro 6.1, Linux Micro 6.0 1-1.1
- kernel-source Linux Micro 6.1, Linux Micro 6.0 6.4.0-25.1
- kernel-default Linux Micro 6.1, Linux Micro 6.0 6.4.0-25.1
- kernel-kvmsmall Linux Micro 6.1, Linux Micro 6.0 6.4.0-25.1
- kernel-default-base Linux Micro 6.1, Linux Micro 6.0 6.4.0-24.1.21.4
- kernel-livepatch-MICRO-6-0_Update_5 Linux Micro 6.1, Linux Micro 6.0 1-1.2
suse advisories SUSE-SU-2025:20166-1SUSE-SU-2025:20249-1SUSE-SU-2025:20165-1SUSE-SU-2025:20248-1SUSE-SU-2025:0565-1SUSE-SU-2025:0564-1
- git.kernel.org/stable/c/ec037fe8c0d0f6140e3d8a49c7b29cb5582160b8 commit
- git.kernel.org/stable/c/cd30a3960433ec2db94b3689752fa3c5df44d649 commit
- git.kernel.org/stable/c/802666a40c71a23542c43a3f87e3a2d0f4e8fe45 commit
- git.kernel.org/stable/c/12771050b6d059eea096993bf2001da9da9fddff commit
- git.kernel.org/stable/c/6b305e98de0d225ccebfb225730a9f560d28ecb0 commit
- git.kernel.org/stable/c/cbd0d5ecfa390ac29c5380200147d09c381b2ac6 commit
- git.kernel.org/stable/c/80f130bfad1dab93b95683fc39b87235682b8f72 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-21664 updated cvss 4.4
kernel: dm thin: make get_first_thin use rcu-safe list first function
-
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 moreaffected: no fix planned “Out of support scope”
-
Red Hat Enterprise Linux 9 rv, perf, rtla, kernel, bpftool, libperf, +83 more Red Hat Enterprise Linux 10 kernelaffected: no fix available “Fix deferred”
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 5.5
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
- total
- Assessed
- 24 d ago
Exploit prediction
0.24% chance of exploitation in the next 30 days, higher than 14% of all scored CVEs (FIRST EPSS, 2026-11-08).
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 3.1 | 7.8 | CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| NVD | 3.1 | 5.5 | CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H |
Affected products
- Linux Linux
- Siemens SIMATIC S7-1500 TM MFP - GNU/Linux subsystem
Classification
- Technology feeds
References
-
git.kernel.org
/stable/c/ec037fe8c0d0f6140e3d8a49c7b29cb5582160b8
patch
-
git.kernel.org
/stable/c/cd30a3960433ec2db94b3689752fa3c5df44d649
patch
-
git.kernel.org
/stable/c/802666a40c71a23542c43a3f87e3a2d0f4e8fe45
patch
-
git.kernel.org
/stable/c/12771050b6d059eea096993bf2001da9da9fddff
patch
-
git.kernel.org
/stable/c/6b305e98de0d225ccebfb225730a9f560d28ecb0
patch
-
git.kernel.org
/stable/c/cbd0d5ecfa390ac29c5380200147d09c381b2ac6
patch
-
git.kernel.org
/stable/c/80f130bfad1dab93b95683fc39b87235682b8f72
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-2025-21664
- NVD CVE-2025-21664
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.