]> www.infradead.org Git - linux.git/commitdiff
usb: misc: onboard_usb_hub: Disable the USB hub clock on failure
authorFabio Estevam <festevam@denx.de>
Tue, 9 Apr 2024 16:29:10 +0000 (13:29 -0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 11 Apr 2024 12:28:47 +0000 (14:28 +0200)
In case regulator_bulk_enable() fails, the previously enabled USB hub
clock should be disabled.

Fix it accordingly.

Fixes: 65e62b8a955a ("usb: misc: onboard_usb_hub: Add support for clock input")
Cc: stable <stable@kernel.org>
Signed-off-by: Fabio Estevam <festevam@denx.de>
Reviewed-by: Frieder Schrempf <frieder.schrempf@kontron.de>
Acked-by: Matthias Kaehlcke <mka@chromium.org>
Link: https://lore.kernel.org/r/20240409162910.2061640-1-festevam@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/misc/onboard_usb_hub.c

index c6101ed2d9d49a3d556b0175ed72cdb1a9cf9193..d8049275a023c61c005cd7a8a89e0bb335d062a8 100644 (file)
@@ -78,7 +78,7 @@ static int onboard_hub_power_on(struct onboard_hub *hub)
        err = regulator_bulk_enable(hub->pdata->num_supplies, hub->supplies);
        if (err) {
                dev_err(hub->dev, "failed to enable supplies: %pe\n", ERR_PTR(err));
-               return err;
+               goto disable_clk;
        }
 
        fsleep(hub->pdata->reset_us);
@@ -87,6 +87,10 @@ static int onboard_hub_power_on(struct onboard_hub *hub)
        hub->is_powered_on = true;
 
        return 0;
+
+disable_clk:
+       clk_disable_unprepare(hub->clk);
+       return err;
 }
 
 static int onboard_hub_power_off(struct onboard_hub *hub)