On Thu, 16 Jul 2026 13:14:17 +0100 Rodrigo Alencar via B4 Relay <[email protected]> wrote:
> From: Rodrigo Alencar <[email protected]> > > Verify that the expected number of i2c messages were transferred when > ad5686_i2c_read() is called. This issue exists since the support for I2C > devices was first introduced. > > Fixes: 4177381b4401 ("iio:dac:ad5686: Add AD5671R/75R/94/94R/95R/96/96R > support") > Reported-by: [email protected] > Closes: > https://lore.kernel.org/all/[email protected]/ > Reviewed-by: David Lechner <[email protected]> > Signed-off-by: Rodrigo Alencar <[email protected]> Let's hold off on this for now. Whilst it is technically correct today I'm looking into ensuring that we never need this. The only error case today is actually returning 0 which in practice is an error. > --- > drivers/iio/dac/ad5696-i2c.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/drivers/iio/dac/ad5696-i2c.c b/drivers/iio/dac/ad5696-i2c.c > index 279309329b64..551b200bfe14 100644 > --- a/drivers/iio/dac/ad5696-i2c.c > +++ b/drivers/iio/dac/ad5696-i2c.c > @@ -7,6 +7,7 @@ > * Copyright 2018 Analog Devices Inc. > */ > > +#include <linux/array_size.h> > #include <linux/errno.h> > #include <linux/i2c.h> > #include <linux/mod_devicetable.h> > @@ -39,9 +40,11 @@ static int ad5686_i2c_read(struct ad5686_state *st, u8 > addr) > AD5686_ADDR(addr) | > 0x00); > > - ret = i2c_transfer(i2c->adapter, msg, 2); > + ret = i2c_transfer(i2c->adapter, msg, ARRAY_SIZE(msg)); > if (ret < 0) > return ret; > + if (ret != ARRAY_SIZE(msg)) > + return -EIO; > > return be16_to_cpu(st->data[0].d16); > } >

