* [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