linux-media.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/2] media: i2c: ds90ubxxx: Fix uninitialized variable uses
@ 2023-08-03  8:41 Tomi Valkeinen
  2023-08-03  8:41 ` [PATCH 1/2] media: i2c: ds90ub9x3: Fix use of uninitialized variables Tomi Valkeinen
  2023-08-03  8:41 ` [PATCH 2/2] media: i2c: ds90ub960: Fix PLL config for 1200 MHz CSI rate Tomi Valkeinen
  0 siblings, 2 replies; 9+ messages in thread
From: Tomi Valkeinen @ 2023-08-03  8:41 UTC (permalink / raw)
  To: Mauro Carvalho Chehab, Laurent Pinchart, Sakari Ailus,
	Andy Shevchenko, Hans Verkuil
  Cc: linux-media, linux-kernel, Tomi Valkeinen

Fix uses of uninitialized variables, reported by smatch.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
---
Tomi Valkeinen (2):
      media: i2c: ds90ub9x3: Fix use of uninitialized variables
      media: i2c: ds90ub960: Fix PLL config for 1200 MHz CSI rate

 drivers/media/i2c/ds90ub913.c | 2 +-
 drivers/media/i2c/ds90ub953.c | 6 +++---
 drivers/media/i2c/ds90ub960.c | 1 +
 3 files changed, 5 insertions(+), 4 deletions(-)
---
base-commit: a0e657a03ffbd26332f316f13c3e5dbc98cb1fca
change-id: 20230803-ub9xx-uninit-vars-733337ba1051

Best regards,
-- 
Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH 1/2] media: i2c: ds90ub9x3: Fix use of uninitialized variables
  2023-08-03  8:41 [PATCH 0/2] media: i2c: ds90ubxxx: Fix uninitialized variable uses Tomi Valkeinen
@ 2023-08-03  8:41 ` Tomi Valkeinen
  2023-08-03 11:57   ` Andy Shevchenko
  2023-08-03 21:46   ` Laurent Pinchart
  2023-08-03  8:41 ` [PATCH 2/2] media: i2c: ds90ub960: Fix PLL config for 1200 MHz CSI rate Tomi Valkeinen
  1 sibling, 2 replies; 9+ messages in thread
From: Tomi Valkeinen @ 2023-08-03  8:41 UTC (permalink / raw)
  To: Mauro Carvalho Chehab, Laurent Pinchart, Sakari Ailus,
	Andy Shevchenko, Hans Verkuil
  Cc: linux-media, linux-kernel, Tomi Valkeinen

smatch reports some uninitialized variables:

drivers/media/i2c/ds90ub913.c:481 ub913_log_status() error: uninitialized symbol 'v1'.
drivers/media/i2c/ds90ub913.c:481 ub913_log_status() error: uninitialized symbol 'v2'.
drivers/media/i2c/ds90ub953.c:655 ub953_log_status() error: uninitialized symbol 'gpio_local_data'.
drivers/media/i2c/ds90ub953.c:655 ub953_log_status() error: uninitialized symbol 'gpio_input_ctrl'.
drivers/media/i2c/ds90ub953.c:655 ub953_log_status() error: uninitialized symbol 'gpio_pin_sts'.

These are used only for printing debug information, and the use of an
uninitialized variable only happens if an i2c transaction has failed,
which will print an error. Thus, fix the errors just by initializing the
variables to 0.

Fixes: 6363db1c9d45 ("media: i2c: add DS90UB953 driver")
Fixes: c158d0d4ff15 ("media: i2c: add DS90UB913 driver")
Reported-by: Hans Verkuil <hverkuil@xs4all.nl>
Closes: https://lore.kernel.org/all/8d6daeb1-b62a-bbb2-b840-8759c84f2085@xs4all.nl/
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
---
 drivers/media/i2c/ds90ub913.c | 2 +-
 drivers/media/i2c/ds90ub953.c | 6 +++---
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/media/i2c/ds90ub913.c b/drivers/media/i2c/ds90ub913.c
index 80d9cf6dd945..b2115e3519e2 100644
--- a/drivers/media/i2c/ds90ub913.c
+++ b/drivers/media/i2c/ds90ub913.c
@@ -469,7 +469,7 @@ static int ub913_log_status(struct v4l2_subdev *sd)
 {
 	struct ub913_data *priv = sd_to_ub913(sd);
 	struct device *dev = &priv->client->dev;
-	u8 v = 0, v1, v2;
+	u8 v = 0, v1 = 0, v2 = 0;
 
 	ub913_read(priv, UB913_REG_MODE_SEL, &v);
 	dev_info(dev, "MODE_SEL %#02x\n", v);
diff --git a/drivers/media/i2c/ds90ub953.c b/drivers/media/i2c/ds90ub953.c
index cadf75eb0773..27471249a62a 100644
--- a/drivers/media/i2c/ds90ub953.c
+++ b/drivers/media/i2c/ds90ub953.c
@@ -593,9 +593,9 @@ static int ub953_log_status(struct v4l2_subdev *sd)
 	u8 v = 0, v1 = 0, v2 = 0;
 	unsigned int i;
 	char id[UB953_REG_FPD3_RX_ID_LEN];
-	u8 gpio_local_data;
-	u8 gpio_input_ctrl;
-	u8 gpio_pin_sts;
+	u8 gpio_local_data = 0;
+	u8 gpio_input_ctrl = 0;
+	u8 gpio_pin_sts = 0;
 
 	for (i = 0; i < sizeof(id); i++)
 		ub953_read(priv, UB953_REG_FPD3_RX_ID(i), &id[i]);

-- 
2.34.1


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 2/2] media: i2c: ds90ub960: Fix PLL config for 1200 MHz CSI rate
  2023-08-03  8:41 [PATCH 0/2] media: i2c: ds90ubxxx: Fix uninitialized variable uses Tomi Valkeinen
  2023-08-03  8:41 ` [PATCH 1/2] media: i2c: ds90ub9x3: Fix use of uninitialized variables Tomi Valkeinen
@ 2023-08-03  8:41 ` Tomi Valkeinen
  2023-08-03 21:43   ` Laurent Pinchart
  1 sibling, 1 reply; 9+ messages in thread
From: Tomi Valkeinen @ 2023-08-03  8:41 UTC (permalink / raw)
  To: Mauro Carvalho Chehab, Laurent Pinchart, Sakari Ailus,
	Andy Shevchenko, Hans Verkuil
  Cc: linux-media, linux-kernel, Tomi Valkeinen

smatch reports:

drivers/media/i2c/ds90ub960.c:1788 ub960_init_tx_ports() error: uninitialized symbol 'pll_div'.

This is caused by 'pll_div' not being set for 1200 MHz CSI rate. Set the
'pll_div' correctly.

Fixes: afe267f2d368 ("media: i2c: add DS90UB960 driver")
Reported-by: Hans Verkuil <hverkuil@xs4all.nl>
Closes: https://lore.kernel.org/all/8d6daeb1-b62a-bbb2-b840-8759c84f2085@xs4all.nl/
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
---
 drivers/media/i2c/ds90ub960.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/media/i2c/ds90ub960.c b/drivers/media/i2c/ds90ub960.c
index 4833b39b9178..4ab45e326d80 100644
--- a/drivers/media/i2c/ds90ub960.c
+++ b/drivers/media/i2c/ds90ub960.c
@@ -1763,6 +1763,7 @@ static int ub960_init_tx_ports(struct ub960_data *priv)
 		break;
 	case MHZ(1200):
 		speed_select = 1;
+		pll_div = 0x18;
 		break;
 	case MHZ(800):
 		speed_select = 2;

-- 
2.34.1


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH 1/2] media: i2c: ds90ub9x3: Fix use of uninitialized variables
  2023-08-03  8:41 ` [PATCH 1/2] media: i2c: ds90ub9x3: Fix use of uninitialized variables Tomi Valkeinen
@ 2023-08-03 11:57   ` Andy Shevchenko
  2023-08-03 11:59     ` Tomi Valkeinen
  2023-08-03 21:46   ` Laurent Pinchart
  1 sibling, 1 reply; 9+ messages in thread
From: Andy Shevchenko @ 2023-08-03 11:57 UTC (permalink / raw)
  To: Tomi Valkeinen
  Cc: Mauro Carvalho Chehab, Laurent Pinchart, Sakari Ailus,
	Hans Verkuil, linux-media, linux-kernel

On Thu, Aug 03, 2023 at 11:41:38AM +0300, Tomi Valkeinen wrote:
> smatch reports some uninitialized variables:
> 
> drivers/media/i2c/ds90ub913.c:481 ub913_log_status() error: uninitialized symbol 'v1'.
> drivers/media/i2c/ds90ub913.c:481 ub913_log_status() error: uninitialized symbol 'v2'.
> drivers/media/i2c/ds90ub953.c:655 ub953_log_status() error: uninitialized symbol 'gpio_local_data'.
> drivers/media/i2c/ds90ub953.c:655 ub953_log_status() error: uninitialized symbol 'gpio_input_ctrl'.
> drivers/media/i2c/ds90ub953.c:655 ub953_log_status() error: uninitialized symbol 'gpio_pin_sts'.
> 
> These are used only for printing debug information, and the use of an
> uninitialized variable only happens if an i2c transaction has failed,
> which will print an error. Thus, fix the errors just by initializing the
> variables to 0.
> 
> Fixes: 6363db1c9d45 ("media: i2c: add DS90UB953 driver")
> Fixes: c158d0d4ff15 ("media: i2c: add DS90UB913 driver")

I would prefer two separate changes on per driver basis. This is a good
practice to make backporting easier (generally speaking).

-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 1/2] media: i2c: ds90ub9x3: Fix use of uninitialized variables
  2023-08-03 11:57   ` Andy Shevchenko
@ 2023-08-03 11:59     ` Tomi Valkeinen
  0 siblings, 0 replies; 9+ messages in thread
From: Tomi Valkeinen @ 2023-08-03 11:59 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: Mauro Carvalho Chehab, Laurent Pinchart, Sakari Ailus,
	Hans Verkuil, linux-media, linux-kernel

On 03/08/2023 14:57, Andy Shevchenko wrote:
> On Thu, Aug 03, 2023 at 11:41:38AM +0300, Tomi Valkeinen wrote:
>> smatch reports some uninitialized variables:
>>
>> drivers/media/i2c/ds90ub913.c:481 ub913_log_status() error: uninitialized symbol 'v1'.
>> drivers/media/i2c/ds90ub913.c:481 ub913_log_status() error: uninitialized symbol 'v2'.
>> drivers/media/i2c/ds90ub953.c:655 ub953_log_status() error: uninitialized symbol 'gpio_local_data'.
>> drivers/media/i2c/ds90ub953.c:655 ub953_log_status() error: uninitialized symbol 'gpio_input_ctrl'.
>> drivers/media/i2c/ds90ub953.c:655 ub953_log_status() error: uninitialized symbol 'gpio_pin_sts'.
>>
>> These are used only for printing debug information, and the use of an
>> uninitialized variable only happens if an i2c transaction has failed,
>> which will print an error. Thus, fix the errors just by initializing the
>> variables to 0.
>>
>> Fixes: 6363db1c9d45 ("media: i2c: add DS90UB953 driver")
>> Fixes: c158d0d4ff15 ("media: i2c: add DS90UB913 driver")
> 
> I would prefer two separate changes on per driver basis. This is a good
> practice to make backporting easier (generally speaking).

Yes, I almost did that, but then somehow got hit by acute laziness... 
I'll send a v2 with split patches.

  Tomi


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 2/2] media: i2c: ds90ub960: Fix PLL config for 1200 MHz CSI rate
  2023-08-03  8:41 ` [PATCH 2/2] media: i2c: ds90ub960: Fix PLL config for 1200 MHz CSI rate Tomi Valkeinen
@ 2023-08-03 21:43   ` Laurent Pinchart
  0 siblings, 0 replies; 9+ messages in thread
From: Laurent Pinchart @ 2023-08-03 21:43 UTC (permalink / raw)
  To: Tomi Valkeinen
  Cc: Mauro Carvalho Chehab, Sakari Ailus, Andy Shevchenko,
	Hans Verkuil, linux-media, linux-kernel

Hi Tomi,

Thank you for the patch.

On Thu, Aug 03, 2023 at 11:41:39AM +0300, Tomi Valkeinen wrote:
> smatch reports:
> 
> drivers/media/i2c/ds90ub960.c:1788 ub960_init_tx_ports() error: uninitialized symbol 'pll_div'.
> 
> This is caused by 'pll_div' not being set for 1200 MHz CSI rate. Set the
> 'pll_div' correctly.

I'm surprised gcc didn't catch it.

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

> Fixes: afe267f2d368 ("media: i2c: add DS90UB960 driver")
> Reported-by: Hans Verkuil <hverkuil@xs4all.nl>
> Closes: https://lore.kernel.org/all/8d6daeb1-b62a-bbb2-b840-8759c84f2085@xs4all.nl/
> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
> ---
>  drivers/media/i2c/ds90ub960.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/media/i2c/ds90ub960.c b/drivers/media/i2c/ds90ub960.c
> index 4833b39b9178..4ab45e326d80 100644
> --- a/drivers/media/i2c/ds90ub960.c
> +++ b/drivers/media/i2c/ds90ub960.c
> @@ -1763,6 +1763,7 @@ static int ub960_init_tx_ports(struct ub960_data *priv)
>  		break;
>  	case MHZ(1200):
>  		speed_select = 1;
> +		pll_div = 0x18;
>  		break;
>  	case MHZ(800):
>  		speed_select = 2;
> 

-- 
Regards,

Laurent Pinchart

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 1/2] media: i2c: ds90ub9x3: Fix use of uninitialized variables
  2023-08-03  8:41 ` [PATCH 1/2] media: i2c: ds90ub9x3: Fix use of uninitialized variables Tomi Valkeinen
  2023-08-03 11:57   ` Andy Shevchenko
@ 2023-08-03 21:46   ` Laurent Pinchart
  2023-08-04  5:49     ` Tomi Valkeinen
  1 sibling, 1 reply; 9+ messages in thread
From: Laurent Pinchart @ 2023-08-03 21:46 UTC (permalink / raw)
  To: Tomi Valkeinen
  Cc: Mauro Carvalho Chehab, Sakari Ailus, Andy Shevchenko,
	Hans Verkuil, linux-media, linux-kernel

Hi Tomi,

Thank you for the patch.

On Thu, Aug 03, 2023 at 11:41:38AM +0300, Tomi Valkeinen wrote:
> smatch reports some uninitialized variables:
> 
> drivers/media/i2c/ds90ub913.c:481 ub913_log_status() error: uninitialized symbol 'v1'.
> drivers/media/i2c/ds90ub913.c:481 ub913_log_status() error: uninitialized symbol 'v2'.
> drivers/media/i2c/ds90ub953.c:655 ub953_log_status() error: uninitialized symbol 'gpio_local_data'.
> drivers/media/i2c/ds90ub953.c:655 ub953_log_status() error: uninitialized symbol 'gpio_input_ctrl'.
> drivers/media/i2c/ds90ub953.c:655 ub953_log_status() error: uninitialized symbol 'gpio_pin_sts'.
> 
> These are used only for printing debug information, and the use of an
> uninitialized variable only happens if an i2c transaction has failed,
> which will print an error. Thus, fix the errors just by initializing the
> variables to 0.
> 
> Fixes: 6363db1c9d45 ("media: i2c: add DS90UB953 driver")
> Fixes: c158d0d4ff15 ("media: i2c: add DS90UB913 driver")
> Reported-by: Hans Verkuil <hverkuil@xs4all.nl>
> Closes: https://lore.kernel.org/all/8d6daeb1-b62a-bbb2-b840-8759c84f2085@xs4all.nl/
> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
> ---
>  drivers/media/i2c/ds90ub913.c | 2 +-
>  drivers/media/i2c/ds90ub953.c | 6 +++---
>  2 files changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/media/i2c/ds90ub913.c b/drivers/media/i2c/ds90ub913.c
> index 80d9cf6dd945..b2115e3519e2 100644
> --- a/drivers/media/i2c/ds90ub913.c
> +++ b/drivers/media/i2c/ds90ub913.c
> @@ -469,7 +469,7 @@ static int ub913_log_status(struct v4l2_subdev *sd)
>  {
>  	struct ub913_data *priv = sd_to_ub913(sd);
>  	struct device *dev = &priv->client->dev;
> -	u8 v = 0, v1, v2;
> +	u8 v = 0, v1 = 0, v2 = 0;

This seems to work around the lack of error checking when calling
ub913_read(). Wouldn't it be better to check for errors there ? Or,
because this is ub913_log_status(), do you consider that we can print an
invalid CRC errors count, given that the ub913_read() function will have
printed an error message before ?

>  
>  	ub913_read(priv, UB913_REG_MODE_SEL, &v);
>  	dev_info(dev, "MODE_SEL %#02x\n", v);
> diff --git a/drivers/media/i2c/ds90ub953.c b/drivers/media/i2c/ds90ub953.c
> index cadf75eb0773..27471249a62a 100644
> --- a/drivers/media/i2c/ds90ub953.c
> +++ b/drivers/media/i2c/ds90ub953.c
> @@ -593,9 +593,9 @@ static int ub953_log_status(struct v4l2_subdev *sd)
>  	u8 v = 0, v1 = 0, v2 = 0;
>  	unsigned int i;
>  	char id[UB953_REG_FPD3_RX_ID_LEN];
> -	u8 gpio_local_data;
> -	u8 gpio_input_ctrl;
> -	u8 gpio_pin_sts;
> +	u8 gpio_local_data = 0;
> +	u8 gpio_input_ctrl = 0;
> +	u8 gpio_pin_sts = 0;
>  
>  	for (i = 0; i < sizeof(id); i++)
>  		ub953_read(priv, UB953_REG_FPD3_RX_ID(i), &id[i]);
> 

-- 
Regards,

Laurent Pinchart

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 1/2] media: i2c: ds90ub9x3: Fix use of uninitialized variables
  2023-08-03 21:46   ` Laurent Pinchart
@ 2023-08-04  5:49     ` Tomi Valkeinen
  2023-08-04  9:00       ` Laurent Pinchart
  0 siblings, 1 reply; 9+ messages in thread
From: Tomi Valkeinen @ 2023-08-04  5:49 UTC (permalink / raw)
  To: Laurent Pinchart
  Cc: Mauro Carvalho Chehab, Sakari Ailus, Andy Shevchenko,
	Hans Verkuil, linux-media, linux-kernel

On 04/08/2023 00:46, Laurent Pinchart wrote:
> Hi Tomi,
> 
> Thank you for the patch.
> 
> On Thu, Aug 03, 2023 at 11:41:38AM +0300, Tomi Valkeinen wrote:
>> smatch reports some uninitialized variables:
>>
>> drivers/media/i2c/ds90ub913.c:481 ub913_log_status() error: uninitialized symbol 'v1'.
>> drivers/media/i2c/ds90ub913.c:481 ub913_log_status() error: uninitialized symbol 'v2'.
>> drivers/media/i2c/ds90ub953.c:655 ub953_log_status() error: uninitialized symbol 'gpio_local_data'.
>> drivers/media/i2c/ds90ub953.c:655 ub953_log_status() error: uninitialized symbol 'gpio_input_ctrl'.
>> drivers/media/i2c/ds90ub953.c:655 ub953_log_status() error: uninitialized symbol 'gpio_pin_sts'.
>>
>> These are used only for printing debug information, and the use of an
>> uninitialized variable only happens if an i2c transaction has failed,
>> which will print an error. Thus, fix the errors just by initializing the
>> variables to 0.
>>
>> Fixes: 6363db1c9d45 ("media: i2c: add DS90UB953 driver")
>> Fixes: c158d0d4ff15 ("media: i2c: add DS90UB913 driver")
>> Reported-by: Hans Verkuil <hverkuil@xs4all.nl>
>> Closes: https://lore.kernel.org/all/8d6daeb1-b62a-bbb2-b840-8759c84f2085@xs4all.nl/
>> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
>> ---
>>   drivers/media/i2c/ds90ub913.c | 2 +-
>>   drivers/media/i2c/ds90ub953.c | 6 +++---
>>   2 files changed, 4 insertions(+), 4 deletions(-)
>>
>> diff --git a/drivers/media/i2c/ds90ub913.c b/drivers/media/i2c/ds90ub913.c
>> index 80d9cf6dd945..b2115e3519e2 100644
>> --- a/drivers/media/i2c/ds90ub913.c
>> +++ b/drivers/media/i2c/ds90ub913.c
>> @@ -469,7 +469,7 @@ static int ub913_log_status(struct v4l2_subdev *sd)
>>   {
>>   	struct ub913_data *priv = sd_to_ub913(sd);
>>   	struct device *dev = &priv->client->dev;
>> -	u8 v = 0, v1, v2;
>> +	u8 v = 0, v1 = 0, v2 = 0;
> 
> This seems to work around the lack of error checking when calling

Yes.

> ub913_read(). Wouldn't it be better to check for errors there ? Or,
> because this is ub913_log_status(), do you consider that we can print an
> invalid CRC errors count, given that the ub913_read() function will have
> printed an error message before ?

Yes, that was my thinking. Adding proper error handling would complicate 
the function (more visibly so in ub953 and ub960, which have more 
printing done), and what would be the benefit? Not much, in my opinion. 
If the i2c transactions start to fail, we're in a bad situation anyway 
(and, as you mention, ub913_read() will print errors).

However, I guess the "benefit" depends on the use a bit. If log status 
is used as a debug aid, I think my reasoning is fine. But if it's used 
by some automated script, to collect data, it may be more difficult for 
the script to detect that an error has happened in the log status.

That said, I have to say this ignore-errors code somewhat bugs me, so 
maybe I'll improve the log-status functions later. But I think these are 
acceptable fixes to get rid of the smatch errors.

  Tomi


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 1/2] media: i2c: ds90ub9x3: Fix use of uninitialized variables
  2023-08-04  5:49     ` Tomi Valkeinen
@ 2023-08-04  9:00       ` Laurent Pinchart
  0 siblings, 0 replies; 9+ messages in thread
From: Laurent Pinchart @ 2023-08-04  9:00 UTC (permalink / raw)
  To: Tomi Valkeinen
  Cc: Mauro Carvalho Chehab, Sakari Ailus, Andy Shevchenko,
	Hans Verkuil, linux-media, linux-kernel

On Fri, Aug 04, 2023 at 08:49:28AM +0300, Tomi Valkeinen wrote:
> On 04/08/2023 00:46, Laurent Pinchart wrote:
> > Hi Tomi,
> > 
> > Thank you for the patch.
> > 
> > On Thu, Aug 03, 2023 at 11:41:38AM +0300, Tomi Valkeinen wrote:
> >> smatch reports some uninitialized variables:
> >>
> >> drivers/media/i2c/ds90ub913.c:481 ub913_log_status() error: uninitialized symbol 'v1'.
> >> drivers/media/i2c/ds90ub913.c:481 ub913_log_status() error: uninitialized symbol 'v2'.
> >> drivers/media/i2c/ds90ub953.c:655 ub953_log_status() error: uninitialized symbol 'gpio_local_data'.
> >> drivers/media/i2c/ds90ub953.c:655 ub953_log_status() error: uninitialized symbol 'gpio_input_ctrl'.
> >> drivers/media/i2c/ds90ub953.c:655 ub953_log_status() error: uninitialized symbol 'gpio_pin_sts'.
> >>
> >> These are used only for printing debug information, and the use of an
> >> uninitialized variable only happens if an i2c transaction has failed,
> >> which will print an error. Thus, fix the errors just by initializing the
> >> variables to 0.
> >>
> >> Fixes: 6363db1c9d45 ("media: i2c: add DS90UB953 driver")
> >> Fixes: c158d0d4ff15 ("media: i2c: add DS90UB913 driver")
> >> Reported-by: Hans Verkuil <hverkuil@xs4all.nl>
> >> Closes: https://lore.kernel.org/all/8d6daeb1-b62a-bbb2-b840-8759c84f2085@xs4all.nl/
> >> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
> >> ---
> >>   drivers/media/i2c/ds90ub913.c | 2 +-
> >>   drivers/media/i2c/ds90ub953.c | 6 +++---
> >>   2 files changed, 4 insertions(+), 4 deletions(-)
> >>
> >> diff --git a/drivers/media/i2c/ds90ub913.c b/drivers/media/i2c/ds90ub913.c
> >> index 80d9cf6dd945..b2115e3519e2 100644
> >> --- a/drivers/media/i2c/ds90ub913.c
> >> +++ b/drivers/media/i2c/ds90ub913.c
> >> @@ -469,7 +469,7 @@ static int ub913_log_status(struct v4l2_subdev *sd)
> >>   {
> >>   	struct ub913_data *priv = sd_to_ub913(sd);
> >>   	struct device *dev = &priv->client->dev;
> >> -	u8 v = 0, v1, v2;
> >> +	u8 v = 0, v1 = 0, v2 = 0;
> > 
> > This seems to work around the lack of error checking when calling
> 
> Yes.
> 
> > ub913_read(). Wouldn't it be better to check for errors there ? Or,
> > because this is ub913_log_status(), do you consider that we can print an
> > invalid CRC errors count, given that the ub913_read() function will have
> > printed an error message before ?
> 
> Yes, that was my thinking. Adding proper error handling would complicate 
> the function (more visibly so in ub953 and ub960, which have more 
> printing done), and what would be the benefit? Not much, in my opinion. 
> If the i2c transactions start to fail, we're in a bad situation anyway 
> (and, as you mention, ub913_read() will print errors).
> 
> However, I guess the "benefit" depends on the use a bit. If log status 
> is used as a debug aid, I think my reasoning is fine. But if it's used 
> by some automated script, to collect data, it may be more difficult for 
> the script to detect that an error has happened in the log status.

I see log status as a debugging aid only, so I'm fine with your
reasoning.

> That said, I have to say this ignore-errors code somewhat bugs me, so 
> maybe I'll improve the log-status functions later. But I think these are 
> acceptable fixes to get rid of the smatch errors.

-- 
Regards,

Laurent Pinchart

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2023-08-04  9:04 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-08-03  8:41 [PATCH 0/2] media: i2c: ds90ubxxx: Fix uninitialized variable uses Tomi Valkeinen
2023-08-03  8:41 ` [PATCH 1/2] media: i2c: ds90ub9x3: Fix use of uninitialized variables Tomi Valkeinen
2023-08-03 11:57   ` Andy Shevchenko
2023-08-03 11:59     ` Tomi Valkeinen
2023-08-03 21:46   ` Laurent Pinchart
2023-08-04  5:49     ` Tomi Valkeinen
2023-08-04  9:00       ` Laurent Pinchart
2023-08-03  8:41 ` [PATCH 2/2] media: i2c: ds90ub960: Fix PLL config for 1200 MHz CSI rate Tomi Valkeinen
2023-08-03 21:43   ` Laurent Pinchart

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).