2021-02-10 19:10:52

by Colin King

[permalink] [raw]
Subject: [PATCH][next] media: i2c: imx334: Fix a read of the uninitialized variable ret

From: Colin Ian King <[email protected]>

Currently there is a dev_err error message that is printing the
error status in variable ret (that has not been set) instead of
the correct error status from imx334->reset_gpio. Fix this.

Addresses-Coverity: ("Uninitialized scalar variable")
Fixes: 9746b11715c3 ("media: i2c: Add imx334 camera sensor driver")

Signed-off-by: Colin Ian King <[email protected]>
---
drivers/media/i2c/imx334.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/media/i2c/imx334.c b/drivers/media/i2c/imx334.c
index 07e31bc2ef18..f8b1caf26c9b 100644
--- a/drivers/media/i2c/imx334.c
+++ b/drivers/media/i2c/imx334.c
@@ -790,7 +790,8 @@ static int imx334_parse_hw_config(struct imx334 *imx334)
imx334->reset_gpio = devm_gpiod_get_optional(imx334->dev, "reset",
GPIOD_OUT_LOW);
if (IS_ERR(imx334->reset_gpio)) {
- dev_err(imx334->dev, "failed to get reset gpio %d", ret);
+ dev_err(imx334->dev, "failed to get reset gpio %ld",
+ IS_ERR_VALUE(imx334->reset_gpio));
return PTR_ERR(imx334->reset_gpio);
}

--
2.30.0


2021-02-10 21:07:22

by Sakari Ailus

[permalink] [raw]
Subject: Re: [PATCH][next] media: i2c: imx334: Fix a read of the uninitialized variable ret

Hi Colin,

On Wed, Feb 10, 2021 at 07:07:52PM +0000, Colin King wrote:
> From: Colin Ian King <[email protected]>
>
> Currently there is a dev_err error message that is printing the
> error status in variable ret (that has not been set) instead of
> the correct error status from imx334->reset_gpio. Fix this.
>
> Addresses-Coverity: ("Uninitialized scalar variable")
> Fixes: 9746b11715c3 ("media: i2c: Add imx334 camera sensor driver")
>
> Signed-off-by: Colin Ian King <[email protected]>
> ---
> drivers/media/i2c/imx334.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/media/i2c/imx334.c b/drivers/media/i2c/imx334.c
> index 07e31bc2ef18..f8b1caf26c9b 100644
> --- a/drivers/media/i2c/imx334.c
> +++ b/drivers/media/i2c/imx334.c
> @@ -790,7 +790,8 @@ static int imx334_parse_hw_config(struct imx334 *imx334)
> imx334->reset_gpio = devm_gpiod_get_optional(imx334->dev, "reset",
> GPIOD_OUT_LOW);
> if (IS_ERR(imx334->reset_gpio)) {
> - dev_err(imx334->dev, "failed to get reset gpio %d", ret);
> + dev_err(imx334->dev, "failed to get reset gpio %ld",
> + IS_ERR_VALUE(imx334->reset_gpio));
> return PTR_ERR(imx334->reset_gpio);
> }

Thanks for the patch. This has been already addressed by another patch
here, and has just been applied to linux-media master.

commit c702e2f70275dbc5373aef50c450cf9c5730636c
Author: Hans Verkuil <[email protected]>
Date: Mon Feb 8 12:32:29 2021 +0100

media: imx334: 'ret' is uninitialized, should have been PTR_ERR()

Fix this compiler warning:

drivers/media/i2c/imx334.c: In function 'imx334_parse_hw_config':
include/linux/dev_printk.h:112:2: warning: 'ret' may be used uninitialized in this function [-Wmaybe-uninitialized]
112 | _dev_err(dev, dev_fmt(fmt), ##__VA_ARGS__)
| ^~~~~~~~
drivers/media/i2c/imx334.c:783:6: note: 'ret' was declared here
783 | int ret;
| ^~~

Signed-off-by: Hans Verkuil <[email protected]>
Signed-off-by: Sakari Ailus <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>

--
Kind regards,

Sakari Ailus

2021-02-11 10:49:52

by Dan Carpenter

[permalink] [raw]
Subject: Re: [PATCH][next] media: i2c: imx334: Fix a read of the uninitialized variable ret

On Wed, Feb 10, 2021 at 11:03:03PM +0200, Sakari Ailus wrote:
> Hi Colin,
>
> On Wed, Feb 10, 2021 at 07:07:52PM +0000, Colin King wrote:
> > From: Colin Ian King <[email protected]>
> >
> > Currently there is a dev_err error message that is printing the
> > error status in variable ret (that has not been set) instead of
> > the correct error status from imx334->reset_gpio. Fix this.
> >
> > Addresses-Coverity: ("Uninitialized scalar variable")
> > Fixes: 9746b11715c3 ("media: i2c: Add imx334 camera sensor driver")
> >
> > Signed-off-by: Colin Ian King <[email protected]>
> > ---
> > drivers/media/i2c/imx334.c | 3 ++-
> > 1 file changed, 2 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/media/i2c/imx334.c b/drivers/media/i2c/imx334.c
> > index 07e31bc2ef18..f8b1caf26c9b 100644
> > --- a/drivers/media/i2c/imx334.c
> > +++ b/drivers/media/i2c/imx334.c
> > @@ -790,7 +790,8 @@ static int imx334_parse_hw_config(struct imx334 *imx334)
> > imx334->reset_gpio = devm_gpiod_get_optional(imx334->dev, "reset",
> > GPIOD_OUT_LOW);
> > if (IS_ERR(imx334->reset_gpio)) {
> > - dev_err(imx334->dev, "failed to get reset gpio %d", ret);
> > + dev_err(imx334->dev, "failed to get reset gpio %ld",
> > + IS_ERR_VALUE(imx334->reset_gpio));

IS_ERR_VALUE() isn't right. It would always print 1 here. It should
just be PTR_ERR().

IS_ERR_VALUE() is like IS_ERR() but for when you're storing memory
addresses in an unsigned long variable. get_unmapped_area(), for
example, returns unsigned longs.

regards,
dan carpenter

2021-02-11 11:10:16

by Colin King

[permalink] [raw]
Subject: Re: [PATCH][next] media: i2c: imx334: Fix a read of the uninitialized variable ret

On 11/02/2021 10:41, Dan Carpenter wrote:
> On Wed, Feb 10, 2021 at 11:03:03PM +0200, Sakari Ailus wrote:
>> Hi Colin,
>>
>> On Wed, Feb 10, 2021 at 07:07:52PM +0000, Colin King wrote:
>>> From: Colin Ian King <[email protected]>
>>>
>>> Currently there is a dev_err error message that is printing the
>>> error status in variable ret (that has not been set) instead of
>>> the correct error status from imx334->reset_gpio. Fix this.
>>>
>>> Addresses-Coverity: ("Uninitialized scalar variable")
>>> Fixes: 9746b11715c3 ("media: i2c: Add imx334 camera sensor driver")
>>>
>>> Signed-off-by: Colin Ian King <[email protected]>
>>> ---
>>> drivers/media/i2c/imx334.c | 3 ++-
>>> 1 file changed, 2 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/drivers/media/i2c/imx334.c b/drivers/media/i2c/imx334.c
>>> index 07e31bc2ef18..f8b1caf26c9b 100644
>>> --- a/drivers/media/i2c/imx334.c
>>> +++ b/drivers/media/i2c/imx334.c
>>> @@ -790,7 +790,8 @@ static int imx334_parse_hw_config(struct imx334 *imx334)
>>> imx334->reset_gpio = devm_gpiod_get_optional(imx334->dev, "reset",
>>> GPIOD_OUT_LOW);
>>> if (IS_ERR(imx334->reset_gpio)) {
>>> - dev_err(imx334->dev, "failed to get reset gpio %d", ret);
>>> + dev_err(imx334->dev, "failed to get reset gpio %ld",
>>> + IS_ERR_VALUE(imx334->reset_gpio));
>
> IS_ERR_VALUE() isn't right. It would always print 1 here. It should
> just be PTR_ERR().
>
> IS_ERR_VALUE() is like IS_ERR() but for when you're storing memory
> addresses in an unsigned long variable. get_unmapped_area(), for
> example, returns unsigned longs.
>
> regards,
> dan carpenter
>
Thanks, that was a brown paper bug mistake for sure :-/

Colin