Re: [PATCH] iio: dac: max5821: fix return value check in powerdown sync
From: Andy Shevchenko
Date: Mon Apr 27 2026 - 15:56:35 EST
On Mon, Apr 27, 2026 at 07:47:46PM +0100, Salah Triki wrote:
> The function max5821_sync_powerdown_mode() previously returned the
> result of i2c_master_send() directly. This is problematic because:
>
> 1. A successful I2C transfer returns the number of bytes sent (2),
> but the caller might expect 0 for success.
> 2. If a partial transfer occurs (e.g., only 1 byte sent), it would
> be treated as success by the caller checking for negative values.
>
> This patch refactors the return value handling to:
> - Propagate negative error codes from the I2C core.
> - Return -EIO in case of incomplete transfers (short writes).
> - Return 0 on complete success.
So the Fixes tag is only for the case #2 from the above as the first one
is already being properly handled in the caller.
...
> - return i2c_master_send(data->client, outbuf, 2);
> + ret = i2c_master_send(data->client, outbuf, 2);
sizeof(outbuf)
> +
Redundant blank line.
> + if (ret < 0)
> + return ret;
> +
> + if (ret != 2)
sizeof(outbuf)
> + return -EIO;
> +
> + return 0;
--
With Best Regards,
Andy Shevchenko