CVE-2021-46959

spi: Fix use-after-free with devm_spi_alloc_*

HIGH
7.8
CVSS Score
Published: February 29, 2024 at 10:31 PM UTC
Updated: June 17, 2026 at 04:15 AM UTC
1 product affected across 1 vendorLinux Kernel

Using Linux by Linux?

Get instant alerts when new vulnerabilities affect Linux - before attackers find them.

Real-time alertsTrack your software stackFree plan available
Severity
HIGH7.8
Exploit prediction
EPSS 0.2%
SSVC
No known exploit

Description

In the Linux kernel, the following vulnerability has been resolved: spi: Fix use-after-free with devm_spi_alloc_* We can't rely on the contents of the devres list during spi_unregister_controller(), as the list is already torn down at the time we perform devres_find() for devm_spi_release_controller. This causes devices registered with devm_spi_alloc_{master,slave}() to be mistakenly identified as legacy, non-devm managed devices and have their reference counters decremented below 0. ------------[ cut here ]------------ WARNING: CPU: 1 PID: 660 at lib/refcount.c:28 refcount_warn_saturate+0x108/0x174 [<b0396f04>] (refcount_warn_saturate) from [<b03c56a4>] (kobject_put+0x90/0x98) [<b03c5614>] (kobject_put) from [<b0447b4c>] (put_device+0x20/0x24) r4:b6700140 [<b0447b2c>] (put_device) from [<b07515e8>] (devm_spi_release_controller+0x3c/0x40) [<b07515ac>] (devm_spi_release_controller) from [<b045343c>] (release_nodes+0x84/0xc4) r5:b6700180 r4:b6700100 [<b04533b8>] (release_nodes) from [<b0454160>] (devres_release_all+0x5c/0x60) r8:b1638c54 r7:b117ad94 r6:b1638c10 r5:b117ad94 r4:b163dc10 [<b0454104>] (devres_release_all) from [<b044e41c>] (__device_release_driver+0x144/0x1ec) r5:b117ad94 r4:b163dc10 [<b044e2d8>] (__device_release_driver) from [<b044f70c>] (device_driver_detach+0x84/0xa0) r9:00000000 r8:00000000 r7:b117ad94 r6:b163dc54 r5:b1638c10 r4:b163dc10 [<b044f688>] (device_driver_detach) from [<b044d274>] (unbind_store+0xe4/0xf8) Instead, determine the devm allocation state as a flag on the controller which is guaranteed to be stable during cleanup.

Affected

Our own answer: ranges merged, affected separated from platform-only, with confidence and review flags.

v ≥ 5.9.114.14.212 ≤ v < 4.14.2334.19.163 ≤ v < 4.19.1914.4.248 ≤ v < 4.4.2714.9.248 ≤ v < 4.9.2715.10 ≤ v < 5.10.375.10 ≤ v < 5.11.215.10 ≤ v < 5.12.45.10 ≤ v < 5.135.11 ≤ v < 5.11.215.12 ≤ v < 5.12.45.4.80 ≤ v < 5.4.1195.9.11 ≤ v < 5.10234b432c7b6184b2d6c5ba2c55f0dd5023c0edf03e04a4976addbedcad326f47b0dd4efc570a1fac4.14.2124.19.1634.4.2484.9.2485.105.4.805.9.115e844cc37a5cbaa460e68f9a989d321d63088a89870525cf94bc27907e94ce99afb6d7239ffd2f58c45a1c6c951bbe7f95db78fcab46f7337364468a4add022c1552b0d51a0b89a4781919d6ebac4f9bd1a5b2307279029faaddbecf2f2ac25eaef8dc6
Vendor states this is fixed in 001c8e83646ad3b847b18f6ac55a54367d917d74 (fixed)
Vendor states this is fixed in 28a5529068c51cdf0295ab1e11a99a3a909a03e4 (fixed)
Vendor states this is fixed in 62bb2c7f2411a0045c24831f11ecacfc35610815 (fixed)
Vendor states this is fixed in 794aaf01444d4e765e2b067cba01cc69c1c68ed9 (fixed)
Vendor states this is fixed in 8735248ebb918d25427965f0db07939ed0473ec6 (fixed)
Vendor states this is fixed in 8bf96425c90f5c1dcf3b7b9df568019a1d4b8a0e (fixed)
Vendor states this is fixed in 8e029707f50a82c53172359c686b2536ab54e58c (fixed)
Vendor states this is fixed in c7fabe372a9031acd00498bc718ce27c253abfd1 (fixed)
Vendor states this is fixed in cee78aa24578edac8cf00513dca618c0acc17cd7 (fixed)
Vendor states this is fixed in 4.14.233 (unaffected)
Vendor states this is fixed in 4.19.191 (unaffected)
Vendor states this is fixed in 4.4.271 (unaffected)
Vendor states this is fixed in 4.9.271 (unaffected)
Vendor states this is fixed in 5.10 (unaffected)
Vendor states this is fixed in 5.10.37 (unaffected)
Vendor states this is fixed in 5.11.21 (unaffected)
Vendor states this is fixed in 5.12.4 (unaffected)
Vendor states this is fixed in 5.13 (unaffected)
Vendor states this is fixed in 5.4.119 (unaffected)

References (9)

Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/001c8e83646ad3b847b18f6ac55a54367d917d74
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/28a5529068c51cdf0295ab1e11a99a3a909a03e4
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/62bb2c7f2411a0045c24831f11ecacfc35610815
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/794aaf01444d4e765e2b067cba01cc69c1c68ed9
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/8735248ebb918d25427965f0db07939ed0473ec6
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/8bf96425c90f5c1dcf3b7b9df568019a1d4b8a0e
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/8e029707f50a82c53172359c686b2536ab54e58c
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/c7fabe372a9031acd00498bc718ce27c253abfd1

SSVC — Action Prioritization

SSVCNo known exploitNot automatablePartial impact

SSVC signals action urgency (what to patch first), separate from CVSS which measures severity.

CVSS

Attack Vector
LOCAL
Complexity
LOW
Privileges
LOW
User Interaction
NONE
Scope
UNCHANGED
Confidentiality
HIGH
Integrity
HIGH
Availability
HIGH
Vector?

Quick Info

StatusANALYZED
CWE
CWE-416

Get alerted

Stop reading CVE feeds looking for your own stack

Track the products you run and VulnTracker tells you when a new CVE affects them — with what is known about fixing it, and nothing about the rest.

Free plan, no card