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

i2c: tegra: check msg length in SMBUS block read

For SMBUS block read, do not continue to read if the message length
passed from the device is '0' or greater than the maximum allowed bytes.

Signed-off-by: Akhil R <akhilrajeev@nvidia.com>
Acked-by: Thierry Reding <treding@nvidia.com>
Link: https://lore.kernel.org/r/20250424053320.19211-1-akhilrajeev@nvidia.com
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>

authored by

Akhil R and committed by
Andi Shyti
a6e04f05 090c3a4a

+5
+5
drivers/i2c/busses/i2c-tegra.c
··· 1395 1395 ret = tegra_i2c_xfer_msg(i2c_dev, &msgs[i], MSG_END_CONTINUE); 1396 1396 if (ret) 1397 1397 break; 1398 + 1399 + /* Validate message length before proceeding */ 1400 + if (msgs[i].buf[0] == 0 || msgs[i].buf[0] > I2C_SMBUS_BLOCK_MAX) 1401 + break; 1402 + 1398 1403 /* Set the msg length from first byte */ 1399 1404 msgs[i].len += msgs[i].buf[0]; 1400 1405 dev_dbg(i2c_dev->dev, "reading %d bytes\n", msgs[i].len);