2022-03-10 18:22:09

by Zizhuang Deng

[permalink] [raw]
Subject: [PATCH] iio: dac: ad5592r: Fix the missing return value.

The third call to `fwnode_property_read_u32` did not record
the return value, resulting in `channel_offstate` possibly
being assigned the wrong value.

Signed-off-by: Zizhuang Deng <[email protected]>
---
drivers/iio/dac/ad5592r-base.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/iio/dac/ad5592r-base.c b/drivers/iio/dac/ad5592r-base.c
index a424b7220b61..4434c1b2a322 100644
--- a/drivers/iio/dac/ad5592r-base.c
+++ b/drivers/iio/dac/ad5592r-base.c
@@ -522,7 +522,7 @@ static int ad5592r_alloc_channels(struct iio_dev *iio_dev)
if (!ret)
st->channel_modes[reg] = tmp;

- fwnode_property_read_u32(child, "adi,off-state", &tmp);
+ ret = fwnode_property_read_u32(child, "adi,off-state", &tmp);
if (!ret)
st->channel_offstate[reg] = tmp;
}
--
2.25.1


2022-03-21 14:44:34

by Jonathan Cameron

[permalink] [raw]
Subject: Re: [PATCH] iio: dac: ad5592r: Fix the missing return value.

On Thu, 10 Mar 2022 20:54:50 +0800
Zizhuang Deng <[email protected]> wrote:

> The third call to `fwnode_property_read_u32` did not record
> the return value, resulting in `channel_offstate` possibly
> being assigned the wrong value.
>
> Signed-off-by: Zizhuang Deng <[email protected]>
Hi,

Definitely rather odd looking and I think your conclusion is correct.
+CC Paul for confirmation that this isn't doing something clever..

> ---
> drivers/iio/dac/ad5592r-base.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/iio/dac/ad5592r-base.c b/drivers/iio/dac/ad5592r-base.c
> index a424b7220b61..4434c1b2a322 100644
> --- a/drivers/iio/dac/ad5592r-base.c
> +++ b/drivers/iio/dac/ad5592r-base.c
> @@ -522,7 +522,7 @@ static int ad5592r_alloc_channels(struct iio_dev *iio_dev)
> if (!ret)
> st->channel_modes[reg] = tmp;
>
> - fwnode_property_read_u32(child, "adi,off-state", &tmp);
> + ret = fwnode_property_read_u32(child, "adi,off-state", &tmp);
> if (!ret)
> st->channel_offstate[reg] = tmp;
> }

2022-03-21 22:36:23

by Paul Cercueil

[permalink] [raw]
Subject: Re: [PATCH] iio: dac: ad5592r: Fix the missing return value.

Hi,

Le dim., mars 20 2022 at 15:20:47 +0000, Jonathan Cameron
<[email protected]> a ?crit :
> On Thu, 10 Mar 2022 20:54:50 +0800
> Zizhuang Deng <[email protected]> wrote:
>
>> The third call to `fwnode_property_read_u32` did not record
>> the return value, resulting in `channel_offstate` possibly
>> being assigned the wrong value.
>>
>> Signed-off-by: Zizhuang Deng <[email protected]>
> Hi,
>
> Definitely rather odd looking and I think your conclusion is correct.
> +CC Paul for confirmation that this isn't doing something clever..

It's been a while, but I don't think there was anything clever going on
here - so the patch is fine.

Cheers,
-Paul

>
>> ---
>> drivers/iio/dac/ad5592r-base.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/iio/dac/ad5592r-base.c
>> b/drivers/iio/dac/ad5592r-base.c
>> index a424b7220b61..4434c1b2a322 100644
>> --- a/drivers/iio/dac/ad5592r-base.c
>> +++ b/drivers/iio/dac/ad5592r-base.c
>> @@ -522,7 +522,7 @@ static int ad5592r_alloc_channels(struct
>> iio_dev *iio_dev)
>> if (!ret)
>> st->channel_modes[reg] = tmp;
>>
>> - fwnode_property_read_u32(child, "adi,off-state", &tmp);
>> + ret = fwnode_property_read_u32(child, "adi,off-state", &tmp);
>> if (!ret)
>> st->channel_offstate[reg] = tmp;
>> }
>


2022-03-27 23:20:11

by Jonathan Cameron

[permalink] [raw]
Subject: Re: [PATCH] iio: dac: ad5592r: Fix the missing return value.

On Mon, 21 Mar 2022 09:28:36 +0000
Paul Cercueil <[email protected]> wrote:

> Hi,
>
> Le dim., mars 20 2022 at 15:20:47 +0000, Jonathan Cameron
> <[email protected]> a écrit :
> > On Thu, 10 Mar 2022 20:54:50 +0800
> > Zizhuang Deng <[email protected]> wrote:
> >
> >> The third call to `fwnode_property_read_u32` did not record
> >> the return value, resulting in `channel_offstate` possibly
> >> being assigned the wrong value.
> >>
> >> Signed-off-by: Zizhuang Deng <[email protected]>
> > Hi,
> >
> > Definitely rather odd looking and I think your conclusion is correct.
> > +CC Paul for confirmation that this isn't doing something clever..
>
> It's been a while, but I don't think there was anything clever going on
> here - so the patch is fine.

Added a fixes tag (it was driver introduction) and marked for stable
given this could have some weird side effects if anyone actually
had a dt that hit this path. Applied to the fixes-togreg branch of iio.git
but not pushed out yet as I'll be rebasing that branch on rc1 next week.

Thanks,

Jonathan

>
> Cheers,
> -Paul
>
> >
> >> ---
> >> drivers/iio/dac/ad5592r-base.c | 2 +-
> >> 1 file changed, 1 insertion(+), 1 deletion(-)
> >>
> >> diff --git a/drivers/iio/dac/ad5592r-base.c
> >> b/drivers/iio/dac/ad5592r-base.c
> >> index a424b7220b61..4434c1b2a322 100644
> >> --- a/drivers/iio/dac/ad5592r-base.c
> >> +++ b/drivers/iio/dac/ad5592r-base.c
> >> @@ -522,7 +522,7 @@ static int ad5592r_alloc_channels(struct
> >> iio_dev *iio_dev)
> >> if (!ret)
> >> st->channel_modes[reg] = tmp;
> >>
> >> - fwnode_property_read_u32(child, "adi,off-state", &tmp);
> >> + ret = fwnode_property_read_u32(child, "adi,off-state", &tmp);
> >> if (!ret)
> >> st->channel_offstate[reg] = tmp;
> >> }
> >
>
>

2022-03-28 22:24:02

by Andy Shevchenko

[permalink] [raw]
Subject: Re: [PATCH] iio: dac: ad5592r: Fix the missing return value.

On Mon, Mar 21, 2022 at 11:34 AM Paul Cercueil <[email protected]> wrote:
> Le dim., mars 20 2022 at 15:20:47 +0000, Jonathan Cameron
> <[email protected]> a écrit :
> > On Thu, 10 Mar 2022 20:54:50 +0800
> > Zizhuang Deng <[email protected]> wrote:
> >
> >> The third call to `fwnode_property_read_u32` did not record
> >> the return value, resulting in `channel_offstate` possibly
> >> being assigned the wrong value.

> > Definitely rather odd looking and I think your conclusion is correct.
> > +CC Paul for confirmation that this isn't doing something clever..
>
> It's been a while, but I don't think there was anything clever going on
> here - so the patch is fine.

Basically the question here is what value should offstate have when
there is no such property. Currently it's the same value as modes (no
seeing context other than in the patch).

> >> if (!ret)
> >> st->channel_modes[reg] = tmp;
> >>
> >> - fwnode_property_read_u32(child, "adi,off-state", &tmp);
> >> + ret = fwnode_property_read_u32(child, "adi,off-state", &tmp);
> >> if (!ret)
> >> st->channel_offstate[reg] = tmp;


--
With Best Regards,
Andy Shevchenko