Linux Media Controller development
 help / color / mirror / Atom feed
* [PATCH] media: dw100: Add a missing unwind goto in dw100_probe()
@ 2023-01-03 10:55 Xavier Roumegue (OSS)
  2023-01-03 11:01 ` Alexander Stein
  0 siblings, 1 reply; 5+ messages in thread
From: Xavier Roumegue (OSS) @ 2023-01-03 10:55 UTC (permalink / raw)
  To: mchehab, ezequiel, hverkuil, laurent.pinchart
  Cc: Xavier Roumegue, linux-media, kernel test robot, Dan Carpenter

From: Xavier Roumegue <xavier.roumegue@oss.nxp.com>

In case the IRQ allocation returns an error in dw100_probe(), the pm
runtime is not disabled before to return.

Add the missing unwind goto on the error handling path of the IRQ
allocation request.

Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <error27@gmail.com>
Signed-off-by: Xavier Roumegue <xavier.roumegue@oss.nxp.com>
---
 drivers/media/platform/nxp/dw100/dw100.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/media/platform/nxp/dw100/dw100.c b/drivers/media/platform/nxp/dw100/dw100.c
index f6d48c36f386..189d60cd5ed1 100644
--- a/drivers/media/platform/nxp/dw100/dw100.c
+++ b/drivers/media/platform/nxp/dw100/dw100.c
@@ -1571,7 +1571,7 @@ static int dw100_probe(struct platform_device *pdev)
 			       dev_name(&pdev->dev), dw_dev);
 	if (ret < 0) {
 		dev_err(&pdev->dev, "Failed to request irq: %d\n", ret);
-		return ret;
+		goto err_pm;
 	}
 
 	ret = v4l2_device_register(&pdev->dev, &dw_dev->v4l2_dev);
-- 
2.39.0


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

* Re: [PATCH] media: dw100: Add a missing unwind goto in dw100_probe()
  2023-01-03 10:55 [PATCH] media: dw100: Add a missing unwind goto in dw100_probe() Xavier Roumegue (OSS)
@ 2023-01-03 11:01 ` Alexander Stein
  2023-01-03 13:35   ` Xavier Roumegue (OSS)
  0 siblings, 1 reply; 5+ messages in thread
From: Alexander Stein @ 2023-01-03 11:01 UTC (permalink / raw)
  To: mchehab, ezequiel, hverkuil, laurent.pinchart,
	Xavier Roumegue (OSS)
  Cc: Xavier Roumegue, linux-media, kernel test robot, Dan Carpenter

Hi,

Am Dienstag, 3. Januar 2023, 11:55:34 CET schrieb Xavier Roumegue (OSS):
> From: Xavier Roumegue <xavier.roumegue@oss.nxp.com>
> 
> In case the IRQ allocation returns an error in dw100_probe(), the pm
> runtime is not disabled before to return.
> 
> Add the missing unwind goto on the error handling path of the IRQ
> allocation request.
> 
> Reported-by: kernel test robot <lkp@intel.com>
> Reported-by: Dan Carpenter <error27@gmail.com>
> Signed-off-by: Xavier Roumegue <xavier.roumegue@oss.nxp.com>
> ---
>  drivers/media/platform/nxp/dw100/dw100.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/media/platform/nxp/dw100/dw100.c
> b/drivers/media/platform/nxp/dw100/dw100.c index f6d48c36f386..189d60cd5ed1
> 100644
> --- a/drivers/media/platform/nxp/dw100/dw100.c
> +++ b/drivers/media/platform/nxp/dw100/dw100.c
> @@ -1571,7 +1571,7 @@ static int dw100_probe(struct platform_device *pdev)
>  			       dev_name(&pdev->dev), dw_dev);
>  	if (ret < 0) {
>  		dev_err(&pdev->dev, "Failed to request irq: %d\n", ret);
> -		return ret;
> +		goto err_pm;
>  	}
> 
>  	ret = v4l2_device_register(&pdev->dev, &dw_dev->v4l2_dev);

Doesn't it make more sense to request/allocate the IRQ (and other resources) 
before enabling runtime PM?

Best regards,
Alexander




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

* Re: [PATCH] media: dw100: Add a missing unwind goto in dw100_probe()
  2023-01-03 11:01 ` Alexander Stein
@ 2023-01-03 13:35   ` Xavier Roumegue (OSS)
  2023-01-03 13:48     ` Alexander Stein
  2023-01-03 13:52     ` Laurent Pinchart
  0 siblings, 2 replies; 5+ messages in thread
From: Xavier Roumegue (OSS) @ 2023-01-03 13:35 UTC (permalink / raw)
  To: Alexander Stein, mchehab, ezequiel, hverkuil, laurent.pinchart
  Cc: linux-media, kernel test robot, Dan Carpenter

Hi Alexander,

On 1/3/23 12:01, Alexander Stein wrote:
> Hi,
> 
> Am Dienstag, 3. Januar 2023, 11:55:34 CET schrieb Xavier Roumegue (OSS):
>> From: Xavier Roumegue <xavier.roumegue@oss.nxp.com>
>>
>> In case the IRQ allocation returns an error in dw100_probe(), the pm
>> runtime is not disabled before to return.
>>
>> Add the missing unwind goto on the error handling path of the IRQ
>> allocation request.
>>
>> Reported-by: kernel test robot <lkp@intel.com>
>> Reported-by: Dan Carpenter <error27@gmail.com>
>> Signed-off-by: Xavier Roumegue <xavier.roumegue@oss.nxp.com>
>> ---
>>   drivers/media/platform/nxp/dw100/dw100.c | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/media/platform/nxp/dw100/dw100.c
>> b/drivers/media/platform/nxp/dw100/dw100.c index f6d48c36f386..189d60cd5ed1
>> 100644
>> --- a/drivers/media/platform/nxp/dw100/dw100.c
>> +++ b/drivers/media/platform/nxp/dw100/dw100.c
>> @@ -1571,7 +1571,7 @@ static int dw100_probe(struct platform_device *pdev)
>>   			       dev_name(&pdev->dev), dw_dev);
>>   	if (ret < 0) {
>>   		dev_err(&pdev->dev, "Failed to request irq: %d\n", ret);
>> -		return ret;
>> +		goto err_pm;
>>   	}
>>
>>   	ret = v4l2_device_register(&pdev->dev, &dw_dev->v4l2_dev);
> 
> Doesn't it make more sense to request/allocate the IRQ (and other resources)
> before enabling runtime PM?
I would say this does as much sense as the other way around, as soon as 
something wrong happens, you have to restore things as it was prior to enter 
your routine. The most optimal function call ordering should depend on the 
failing occurrence likelihood of each individual function.
On the probe path, I assume none of the functions are expected to fail.
But I understand one could argue differently.

So for the time being, this oneliner patch addresses the issue reported by the 
robot.

Regards,
  Xavier

> 
> Best regards,
> Alexander
> 
> 
> 

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

* Re: [PATCH] media: dw100: Add a missing unwind goto in dw100_probe()
  2023-01-03 13:35   ` Xavier Roumegue (OSS)
@ 2023-01-03 13:48     ` Alexander Stein
  2023-01-03 13:52     ` Laurent Pinchart
  1 sibling, 0 replies; 5+ messages in thread
From: Alexander Stein @ 2023-01-03 13:48 UTC (permalink / raw)
  To: mchehab, ezequiel, hverkuil, laurent.pinchart,
	Xavier Roumegue (OSS)
  Cc: linux-media, kernel test robot, Dan Carpenter

Hi Xavier,

Am Dienstag, 3. Januar 2023, 14:35:35 CET schrieb Xavier Roumegue (OSS):
> Hi Alexander,
> 
> On 1/3/23 12:01, Alexander Stein wrote:
> > Hi,
> > 
> > Am Dienstag, 3. Januar 2023, 11:55:34 CET schrieb Xavier Roumegue (OSS):
> >> From: Xavier Roumegue <xavier.roumegue@oss.nxp.com>
> >> 
> >> In case the IRQ allocation returns an error in dw100_probe(), the pm
> >> runtime is not disabled before to return.
> >> 
> >> Add the missing unwind goto on the error handling path of the IRQ
> >> allocation request.
> >> 
> >> Reported-by: kernel test robot <lkp@intel.com>
> >> Reported-by: Dan Carpenter <error27@gmail.com>
> >> Signed-off-by: Xavier Roumegue <xavier.roumegue@oss.nxp.com>
> >> ---
> >> 
> >>   drivers/media/platform/nxp/dw100/dw100.c | 2 +-
> >>   1 file changed, 1 insertion(+), 1 deletion(-)
> >> 
> >> diff --git a/drivers/media/platform/nxp/dw100/dw100.c
> >> b/drivers/media/platform/nxp/dw100/dw100.c index
> >> f6d48c36f386..189d60cd5ed1
> >> 100644
> >> --- a/drivers/media/platform/nxp/dw100/dw100.c
> >> +++ b/drivers/media/platform/nxp/dw100/dw100.c
> >> @@ -1571,7 +1571,7 @@ static int dw100_probe(struct platform_device
> >> *pdev)
> >> 
> >>   			       dev_name(&pdev->dev), dw_dev);
> >>   	
> >>   	if (ret < 0) {
> >>   	
> >>   		dev_err(&pdev->dev, "Failed to request irq: %d\n", ret);
> >> 
> >> -		return ret;
> >> +		goto err_pm;
> >> 
> >>   	}
> >>   	
> >>   	ret = v4l2_device_register(&pdev->dev, &dw_dev->v4l2_dev);
> > 
> > Doesn't it make more sense to request/allocate the IRQ (and other
> > resources) before enabling runtime PM?
> 
> I would say this does as much sense as the other way around, as soon as
> something wrong happens, you have to restore things as it was prior to enter
> your routine. The most optimal function call ordering should depend on the
> failing occurrence likelihood of each individual function.
> On the probe path, I assume none of the functions are expected to fail.
> But I understand one could argue differently.

-EPROBE_DEFER teached me otherwise ;-) What I actually wanted to highlight is 
that calling the devm_* functions first, reduces the cleanup path for the 
following setup calls.

> So for the time being, this oneliner patch addresses the issue reported by
> the robot.

Sure, on the other hand it's less complex if you can just return in an error 
path.

Best regards,
Alexander




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

* Re: [PATCH] media: dw100: Add a missing unwind goto in dw100_probe()
  2023-01-03 13:35   ` Xavier Roumegue (OSS)
  2023-01-03 13:48     ` Alexander Stein
@ 2023-01-03 13:52     ` Laurent Pinchart
  1 sibling, 0 replies; 5+ messages in thread
From: Laurent Pinchart @ 2023-01-03 13:52 UTC (permalink / raw)
  To: Xavier Roumegue (OSS)
  Cc: Alexander Stein, mchehab, ezequiel, hverkuil, linux-media,
	kernel test robot, Dan Carpenter

Hello Xavier,

On Tue, Jan 03, 2023 at 02:35:35PM +0100, Xavier Roumegue (OSS) wrote:
> On 1/3/23 12:01, Alexander Stein wrote:
> > Am Dienstag, 3. Januar 2023, 11:55:34 CET schrieb Xavier Roumegue (OSS):
> >> From: Xavier Roumegue <xavier.roumegue@oss.nxp.com>
> >>
> >> In case the IRQ allocation returns an error in dw100_probe(), the pm
> >> runtime is not disabled before to return.
> >>
> >> Add the missing unwind goto on the error handling path of the IRQ
> >> allocation request.
> >>
> >> Reported-by: kernel test robot <lkp@intel.com>
> >> Reported-by: Dan Carpenter <error27@gmail.com>
> >> Signed-off-by: Xavier Roumegue <xavier.roumegue@oss.nxp.com>
> >> ---
> >>   drivers/media/platform/nxp/dw100/dw100.c | 2 +-
> >>   1 file changed, 1 insertion(+), 1 deletion(-)
> >>
> >> diff --git a/drivers/media/platform/nxp/dw100/dw100.c
> >> b/drivers/media/platform/nxp/dw100/dw100.c index f6d48c36f386..189d60cd5ed1
> >> 100644
> >> --- a/drivers/media/platform/nxp/dw100/dw100.c
> >> +++ b/drivers/media/platform/nxp/dw100/dw100.c
> >> @@ -1571,7 +1571,7 @@ static int dw100_probe(struct platform_device *pdev)
> >>   			       dev_name(&pdev->dev), dw_dev);
> >>   	if (ret < 0) {
> >>   		dev_err(&pdev->dev, "Failed to request irq: %d\n", ret);
> >> -		return ret;
> >> +		goto err_pm;
> >>   	}
> >>
> >>   	ret = v4l2_device_register(&pdev->dev, &dw_dev->v4l2_dev);
> > 
> > Doesn't it make more sense to request/allocate the IRQ (and other resources)
> > before enabling runtime PM?
>
> I would say this does as much sense as the other way around, as soon as 
> something wrong happens, you have to restore things as it was prior to enter 
> your routine. The most optimal function call ordering should depend on the 
> failing occurrence likelihood of each individual function.
> On the probe path, I assume none of the functions are expected to fail.
> But I understand one could argue differently.
> 
> So for the time being, this oneliner patch addresses the issue reported by the 
> robot.

I think that Alexander's point was that, as you request the IRQ with
devm_request_irq(), you could just return in case of error if this was
done before any other operation that requires a cleanup. In this case,
however, enabling runtime PM is done so that the device gets reset,
which I think is important to do before requesting the IRQ, otherwise
spurious IRQs could happen if the device was left in a weird state.

A comment above runtime PM enable would be useful to record the reason
why the current order is required. You could add that in a v2 of this
patch, or in a separate patch. In either case,

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

-- 
Regards,

Laurent Pinchart

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

end of thread, other threads:[~2023-01-03 13:52 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-01-03 10:55 [PATCH] media: dw100: Add a missing unwind goto in dw100_probe() Xavier Roumegue (OSS)
2023-01-03 11:01 ` Alexander Stein
2023-01-03 13:35   ` Xavier Roumegue (OSS)
2023-01-03 13:48     ` Alexander Stein
2023-01-03 13:52     ` Laurent Pinchart

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox