Re: [PATCH v5 1/5] media: hi846: Fix hi846_write_reg_16 handling
Sakari Ailus <[email protected]> Thu, 30 Jul 2026 01:16:38 +0300
| Newsgroups | dev.linux.lists.imx,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-kernel,org.kernel.vger.linux-media |
|---|---|
| Organization | Intel Finland Oy - BIC 0357606-4 - c/o Alberga Business Park, 6 krs, Bertel Jungin Aukio 5, 02600 Espoo |
| Message-ID | <[email protected]> |
Hi Pengyu,
On Sun, Jul 12, 2026 at 07:55:53PM +0800, Pengyu Luo wrote:
> hi846_write_reg_16() does not clear a positive *err value on success.
> pm_runtime_get_if_in_use() returns a positive value when the device
> is already in use. When hi846_set_ctrl() passes &ret holding this
> positive value) to hi846_write_reg_16(), the function returns with ret
> as is, the positive value propagates back as a return code, which
> callers interpret as an error.
>
> Fix this by resetting *err to 0 only when it is positive.
>
> Fixes: 04fc06f6dc15 ("media: hi846: fix usage of pm_runtime_get_if_in_use()")
> Signed-off-by: Pengyu Luo <[email protected]>
> ---
> drivers/media/i2c/hi846.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/drivers/media/i2c/hi846.c b/drivers/media/i2c/hi846.c
> index a3f77b8434ca..7f069aca0fce 100644
> --- a/drivers/media/i2c/hi846.c
> +++ b/drivers/media/i2c/hi846.c
> @@ -1271,6 +1271,8 @@ static void hi846_write_reg_16(struct hi846 *hi846, u16 reg, u16 val, int *err)
> if (*err < 0)
> return;
>
> + *err = 0;
This should be first (or at least before non-fix patches) in the set.
Can you also add Cc: stable, please?
> +
> put_unaligned_be16(reg, buf);
> put_unaligned_be16(val, buf + 2);
> ret = i2c_master_send(client, buf, sizeof(buf));
--
Regards,
Sakari Ailus