Messages in this thread | | | From | Fabien DESSENNE <> | Subject | Re: [PATCH 4.19 070/276] media: stm32-dcmi: return appropriate error codes during probe | Date | Fri, 31 May 2019 08:39:18 +0000 |
| |
Hi Pavel
On 31/05/2019 10:19 AM, Pavel Machek wrote: > Hi! > >> [ Upstream commit b5b5a27bee5884860798ffd0f08e611a3942064b ] >> >> During probe, return the provided errors value instead of -ENODEV. >> This allows the driver to be deferred probed if needed. > This is not correct AFAICT.
The driver gets defer probed *if needed*. *if needed* is for the case where platform_get_irq returns -EPROBE_DEFER, which happens if the irq controller is not ready yet.
Of course, for the other cases, the probe would just fail.
> > >> --- a/drivers/media/platform/stm32/stm32-dcmi.c >> +++ b/drivers/media/platform/stm32/stm32-dcmi.c >> @@ -1673,8 +1673,9 @@ static int dcmi_probe(struct platform_device *pdev) >> >> irq = platform_get_irq(pdev, 0); >> if (irq <= 0) { >> - dev_err(&pdev->dev, "Could not get irq\n"); >> - return -ENODEV; >> + if (irq != -EPROBE_DEFER) >> + dev_err(&pdev->dev, "Could not get irq\n"); >> + return irq; >> } >> >> dcmi->res = platform_get_resource(pdev, IORESOURCE_MEM, 0); > irq == 0 is clearly means error here, but will be interpretted as > success when returned to the caller.
Thank you for pointing this.
It shall be 'return irq ? irq : -ENXIO;' I will send a fix for this.
> > As device is not initialized at that point, I'd expect some kind of > crash later. > Pavel
| |