usb: gadget: udc: gr_udc: Fix deferred probing
authorZhu Wang <wangzhu9@huawei.com>
Fri, 4 Aug 2023 11:00:05 +0000 (19:00 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 4 Aug 2023 12:46:24 +0000 (14:46 +0200)
When platform_get_irq() fails, it may return -EPROBE_DEFER, which
suggested deferred probing, it is very important to propagate it
upstream. We cannot override it with other error code.

Commit ce753ad1549c ("platform: finally disallow IRQ0 in
platform_get_irq() and its ilk") makes sure IRQ0 is not returned.

Signed-off-by: Zhu Wang <wangzhu9@huawei.com>
Link: https://lore.kernel.org/r/20230804110005.97061-1-wangzhu9@huawei.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/gadget/udc/gr_udc.c

index 0c39693..c6dfa7c 100644 (file)
@@ -2136,15 +2136,15 @@ static int gr_probe(struct platform_device *pdev)
                return PTR_ERR(regs);
 
        dev->irq = platform_get_irq(pdev, 0);
-       if (dev->irq <= 0)
-               return -ENODEV;
+       if (dev->irq < 0)
+               return dev->irq;
 
        /* Some core configurations has separate irqs for IN and OUT events */
        dev->irqi = platform_get_irq(pdev, 1);
        if (dev->irqi > 0) {
                dev->irqo = platform_get_irq(pdev, 2);
-               if (dev->irqo <= 0)
-                       return -ENODEV;
+               if (dev->irqo < 0)
+                       return dev->irqo;
        } else {
                dev->irqi = 0;
        }