[PATCH 0/5] spi: fix division by zero with a zero transfer speed
shao.mingyin at zte.com.cn
shao.mingyin at zte.com.cn
Fri Nov 6 07:47:51 PST 2026
Five SPI controller drivers compute a clock divider from the transfer
speed without checking that it is non-zero. A SPI device whose
max_speed_hz is zero (a DT node without spi-max-frequency, or a device
created through the spidev sysfs new_device interface without a speed)
therefore reaches the division with speed_hz == 0. The SPI core clamps
such a device to the controller limit only when host->max_speed_hz is
set, and none of these five drivers sets it.
The series is organized by driver and is independent patch-by-patch;
each patch can be applied and reviewed on its own, and taking a subset
is fine:
1/5 spi: sifive: fix division by zero in clock divisor calculation
2/5 spi: bcm63xx-hsspi: fix division by zero for devices without a max speed
3/5 spi: bcmbca-hsspi: fix division by zero for devices without a max speed
4/5 spi: apple: fix division by zero in clock divisor calculation
5/5 spi: atmel: fix division by zero when transfer speed is zero
All five clamp the divisor to 1 Hz, the same approach as the recent
spi-jcore fix. The division does not trap on the SoCs these drivers run
on: depending on the architecture it produces a bogus divider, a zero
quotient or an undefined value, so the patches remove undefined
arithmetic rather than a crash.
Shao Mingyin (5):
spi: sifive: fix division by zero in clock divisor calculation
spi: bcm63xx-hsspi: fix division by zero for devices without a max speed
spi: bcmbca-hsspi: fix division by zero for devices without a max speed
spi: apple: fix division by zero in clock divisor calculation
spi: atmel: fix division by zero when transfer speed is zero
drivers/spi/spi-apple.c | 6 +++++-
drivers/spi/spi-atmel.c | 3 ++-
drivers/spi/spi-bcm63xx-hsspi.c | 3 +++
drivers/spi/spi-bcmbca-hsspi.c | 3 +++
drivers/spi/spi-sifive.c | 6 +++++-
5 files changed, 18 insertions(+), 3 deletions(-)
---
base-commit: 7649ba73f9e7e1e04d0b46213e39c79ae09dd55c
More information about the linux-riscv
mailing list