Re: [PATCH] iio: dac: max5821: fix return value check in powerdown sync

Andy Shevchenko
2026-04-27T19:56:13Z

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