CVE-2021-47282

spi: bcm2835: Fix out-of-bounds access with more than 4 slaves

HIGH
7.8
CVSS Score
Published: May 21, 2024 at 02:20 PM UTC
Updated: August 5, 2026 at 09:24 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: bcm2835: Fix out-of-bounds access with more than 4 slaves Commit 571e31fa60b3 ("spi: bcm2835: Cache CS register value for ->prepare_message()") limited the number of slaves to 3 at compile-time. The limitation was necessitated by a statically-sized array prepare_cs[] in the driver private data which contains a per-slave register value. The commit sought to enforce the limitation at run-time by setting the controller's num_chipselect to 3: Slaves with a higher chipselect are rejected by spi_add_device(). However the commit neglected that num_chipselect only limits the number of *native* chipselects. If GPIO chipselects are specified in the device tree for more than 3 slaves, num_chipselect is silently raised by of_spi_get_gpio_numbers() and the result are out-of-bounds accesses to the statically-sized array prepare_cs[]. As a bandaid fix which is backportable to stable, raise the number of allowed slaves to 24 (which "ought to be enough for anybody"), enforce the limitation on slave ->setup and revert num_chipselect to 3 (which is the number of native chipselects supported by the controller). An upcoming for-next commit will allow an arbitrary number of slaves.

Affected

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

5.11 ≤ v < 5.12.115.4 ≤ v < 5.10.445.4 ≤ v < 5.12.115.4 ≤ v < 5.135.4 ≤ v < 5.4.1265.5 ≤ v < 5.10.445.13 rc15.13 rc25.13 rc35.13 rc45.13 rc5571e31fa60b3697d5db26140e16d5c45c51c9815
Vendor states this is fixed in 01415ff85a24308059e06ca3e97fd7bf75648690 (fixed)
Vendor states this is fixed in 13817d466eb8713a1ffd254f537402f091d48444 (fixed)
Vendor states this is fixed in 82a8ffba54d31e97582051cb56ba1f988018681e (fixed)
Vendor states this is fixed in b5502580cf958b094f3b69dfe4eece90eae01fbc (fixed)
Vendor states this is fixed in 5.10.44 (unaffected)
Vendor states this is fixed in 5.12.11 (unaffected)
Vendor states this is fixed in 5.13 (unaffected)
Vendor states this is fixed in 5.4 (unaffected)
Vendor states this is fixed in 5.4.126 (unaffected)

References (4)

Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/01415ff85a24308059e06ca3e97fd7bf75648690
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/13817d466eb8713a1ffd254f537402f091d48444
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/82a8ffba54d31e97582051cb56ba1f988018681e
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/b5502580cf958b094f3b69dfe4eece90eae01fbc

SSVC — Action Prioritization

SSVCNo known exploitNot automatablePartial impact

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

CVSS

7.8HIGHLinux
Vector?

Quick Info

StatusMODIFIED
CWE
CWE-787

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