[PATCH] i2c: read/write_reg: don't assume client->dev to be valid

Uwe Kleine-König u.kleine-koenig at pengutronix.de
Mon Jan 22 02:59:58 PST 2018


When using the barebox commands i2c_read or i2c_write the client pointer
passed to the respective function isn't completely initialized. This
makes

	dev_dbg(&client->dev, ...);

choke as it dereferences client->dev.driver->name with
client->dev.driver being a random value.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig at pengutronix.de>
---
 drivers/i2c/i2c.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/i2c/i2c.c b/drivers/i2c/i2c.c
index fa2c0cd13697..e9e757558561 100644
--- a/drivers/i2c/i2c.c
+++ b/drivers/i2c/i2c.c
@@ -184,7 +184,7 @@ int i2c_read_reg(struct i2c_client *client, u32 addr, u8 *buf, u16 count)
 	msg->len = i;
 
 	status = i2c_transfer(client->adapter, msg, ARRAY_SIZE(msg));
-	dev_dbg(&client->dev, "%s: %u@%u --> %d\n", __func__,
+	dev_dbg(&client->adapter->dev, "%s: %u@%u --> %d\n", __func__,
 		count, addr, status);
 
 	if (status == ARRAY_SIZE(msg))
@@ -217,7 +217,7 @@ int i2c_write_reg(struct i2c_client *client, u32 addr, const u8 *buf, u16 count)
 	memcpy(msg->buf + i, buf, count);
 
 	status = i2c_transfer(client->adapter, msg, ARRAY_SIZE(msg));
-	dev_dbg(&client->dev, "%s: %u@%u --> %d\n", __func__,
+	dev_dbg(&client->adapter->dev, "%s: %u@%u --> %d\n", __func__,
 		count, addr, status);
 
 	if (status == ARRAY_SIZE(msg))
-- 
2.11.0




More information about the barebox mailing list