usb: dwc3: omap: Fix devm_regulator_get_optional() error handling
authorRob Herring (Arm) <robh@kernel.org>
Thu, 9 Jan 2025 17:07:47 +0000 (11:07 -0600)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 11 Jan 2025 16:02:30 +0000 (17:02 +0100)
Commit 533561a8aad5 ("usb: dwc3: omap: Use
devm_regulator_get_optional()") assumed NULL was returned, but
devm_regulator_get_optional() returns -ENODEV rather than NULL like
other *_get_optional() functions.

Fixes: 533561a8aad5 ("usb: dwc3: omap: Use devm_regulator_get_optional()")
Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
Acked-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
Link: https://lore.kernel.org/r/20250109170748.3852439-1-robh@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/dwc3/dwc3-omap.c

index 9b1d10ac33c15945d14ebd0d58c04d4fabe6127b..fe74d11bb629c9a411c31b70bf83eaaf2643e89d 100644 (file)
@@ -484,8 +484,11 @@ static int dwc3_omap_probe(struct platform_device *pdev)
                return PTR_ERR(base);
 
        vbus_reg = devm_regulator_get_optional(dev, "vbus");
-       if (IS_ERR(vbus_reg))
-               return dev_err_probe(dev, PTR_ERR(vbus_reg), "vbus init failed\n");
+       if (IS_ERR(vbus_reg)) {
+               if (PTR_ERR(vbus_reg) != -ENODEV)
+                       return dev_err_probe(dev, PTR_ERR(vbus_reg), "vbus init failed\n");
+               vbus_reg = NULL;
+       }
 
        omap->dev       = dev;
        omap->irq       = irq;