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