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 products
| Vendor | Product | Affected | Fixed |
|---|---|---|---|
| Linux | Linux | 5.4 | 5.4.126 |
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.
Debian
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Debian 14 | linux | 5.10.46-1 | — |
| Debian 13 | linux | 5.10.46-1 | — |
| Debian 12 | linux | 5.10.46-1 | — |
Ubuntu
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Ubuntu 24.04 LTS | linux-raspi-realtime | No fix yet | — |
| Ubuntu 22.04 LTS | linux-riscv +22 | No fix yet | — |
| Ubuntu 20.04 LTS | linux | 5.4.0-81.91 | — |
| Ubuntu 20.04 LTS | linux-aws | 5.4.0-1055.58 | — |
| Ubuntu 20.04 LTS | linux-azure | 5.4.0-1056.58 | — |
| Ubuntu 20.04 LTS | linux-bluefield | 5.4.0-1019.22 | — |
| Ubuntu 20.04 LTS | linux-gcp | 5.4.0-1051.55 | — |
| Ubuntu 20.04 LTS | linux-gke +26 | No fix yet | — |
| Ubuntu 20.04 LTS | linux-gkeop | 5.4.0-1022.23 | — |
| Ubuntu 20.04 LTS | linux-kvm | 5.4.0-1045.47 | — |
| Ubuntu 20.04 LTS | linux-oracle | 5.4.0-1053.57 | — |
| Ubuntu 20.04 LTS | linux-raspi | 5.4.0-1042.46 | — |
| Ubuntu 18.04 LTS | linux-aws-5.4 | 5.4.0-1055.58~18.04.1 | — |
| Ubuntu 18.04 LTS | linux-azure-5.4 | 5.4.0-1056.58~18.04.1 | — |
| Ubuntu 18.04 LTS | linux-gcp +13 | No fix yet | — |
| Ubuntu 18.04 LTS | linux-gcp-5.4 | 5.4.0-1051.55~18.04.1 | — |
| Ubuntu 18.04 LTS | linux-hwe-5.4 | 5.4.0-81.91~18.04.1 | — |
| Ubuntu 18.04 LTS | linux-oracle-5.4 | 5.4.0-1053.57~18.04.1 | — |
| Ubuntu 18.04 LTS | linux-raspi-5.4 | 5.4.0-1042.46~18.04.3 | — |
| Ubuntu 16.04 LTS | linux-hwe-edge | No fix yet | — |
Show 2 more (older releases, extended support, other products)Fewer releases
| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Ubuntu Pro FIPS 20.04 LTS | linux-fips +3 | No fix yet | — |
| Ubuntu Pro FIPS-updates 20.04 LTS | linux-aws-fips | 5.4.0-1069.73+fips2 | — |
| Ubuntu Pro FIPS-updates 20.04 LTS | linux-azure-fips | 5.4.0-1073.76+fips1 | — |
| Ubuntu Pro FIPS-updates 20.04 LTS | linux-fips | 5.4.0-1032.37 | — |
| Ubuntu Pro FIPS-updates 20.04 LTS | linux-gcp-fips | 5.4.0-1067.71~20.04.1 | — |