public inbox for linux-tegra@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 RESEND] i2c: tegra: check msg length in SMBUS block read
@ 2025-04-24  5:33 Akhil R
  2025-04-28 23:34 ` Andi Shyti
  0 siblings, 1 reply; 7+ messages in thread
From: Akhil R @ 2025-04-24  5:33 UTC (permalink / raw)
  To: ldewangan, digetx, andi.shyti, thierry.reding, jonathanh, wsa,
	linux-i2c, linux-tegra, linux-kernel
  Cc: Akhil R, Thierry Reding

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>
---
v1->v2: Add check for the maximum data as well.

 drivers/i2c/busses/i2c-tegra.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/i2c/busses/i2c-tegra.c b/drivers/i2c/busses/i2c-tegra.c
index 87976e99e6d0..049b4d154c23 100644
--- a/drivers/i2c/busses/i2c-tegra.c
+++ b/drivers/i2c/busses/i2c-tegra.c
@@ -1395,6 +1395,11 @@ static int tegra_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[],
 			ret = tegra_i2c_xfer_msg(i2c_dev, &msgs[i], MSG_END_CONTINUE);
 			if (ret)
 				break;
+
+			/* Validate message length before proceeding */
+			if (msgs[i].buf[0] == 0 || msgs[i].buf[0] > I2C_SMBUS_BLOCK_MAX)
+				break;
+
 			/* Set the msg length from first byte */
 			msgs[i].len += msgs[i].buf[0];
 			dev_dbg(i2c_dev->dev, "reading %d bytes\n", msgs[i].len);
-- 
2.43.2


^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2025-04-29 11:29 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-04-24  5:33 [PATCH v2 RESEND] i2c: tegra: check msg length in SMBUS block read Akhil R
2025-04-28 23:34 ` Andi Shyti
2025-04-29  3:17   ` Wolfram Sang
2025-04-29  4:37     ` Akhil R
2025-04-29  5:41       ` Wolfram Sang
2025-04-29  9:51         ` Akhil R
2025-04-29 11:29           ` Andi Shyti

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox