Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

clk: bcm: rpi: Fix off by one in raspberrypi_discover_clocks()

Smatch detected an off by one in this code:
drivers/clk/bcm/clk-raspberrypi.c:374 raspberrypi_discover_clocks()
error: buffer overflow 'data->hws' 16 <= 16

The data->hws[] array has RPI_FIRMWARE_NUM_CLK_ID elements so the >
comparison needs to changed to >=.

Fixes: 12c90f3f27bb ("clk: bcm: rpi: Add variant structure")
Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
Link: https://lore.kernel.org/r/5a850b08-d2f5-4794-aceb-a6b468965139@kili.mountain
Reviewed-by: Stefan Wahren <stefan.wahren@i2se.com>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: Stephen Boyd <sboyd@kernel.org>

authored by

Dan Carpenter and committed by
Stephen Boyd
da2edb3e a7a0c7d5

+2 -2
+2 -2
drivers/clk/bcm/clk-raspberrypi.c
··· 356 356 while (clks->id) { 357 357 struct raspberrypi_clk_variant *variant; 358 358 359 - if (clks->id > RPI_FIRMWARE_NUM_CLK_ID) { 359 + if (clks->id >= RPI_FIRMWARE_NUM_CLK_ID) { 360 360 dev_err(rpi->dev, "Unknown clock id: %u (max: %u)\n", 361 - clks->id, RPI_FIRMWARE_NUM_CLK_ID); 361 + clks->id, RPI_FIRMWARE_NUM_CLK_ID - 1); 362 362 return -EINVAL; 363 363 } 364 364