On 3/10/2022 10:33 AM, Jiasheng Jiang wrote: > As the potential failure of the dwc2_vbus_supply_init(), > it should be better to handle the return value and check > it. > > Fixes: cd7cd0e6cedf ("usb: dwc2: fix unbalanced use of external vbus-supply") > Signed-off-by: Jiasheng Jiang <jiasheng@xxxxxxxxxxx> Acked-by: Minas Harutyunyan <hminas@xxxxxxxxxxxx> > --- > drivers/usb/dwc2/hcd.c | 8 +++++--- > 1 file changed, 5 insertions(+), 3 deletions(-) > > diff --git a/drivers/usb/dwc2/hcd.c b/drivers/usb/dwc2/hcd.c > index f63a27d11fac..c8786d223dcd 100644 > --- a/drivers/usb/dwc2/hcd.c > +++ b/drivers/usb/dwc2/hcd.c > @@ -3672,7 +3672,7 @@ static int dwc2_hcd_hub_control(struct dwc2_hsotg *hsotg, u16 typereq, > hprt0 |= HPRT0_PWR; > dwc2_writel(hsotg, hprt0, HPRT0); > if (!pwr) > - dwc2_vbus_supply_init(hsotg); > + retval = dwc2_vbus_supply_init(hsotg); > break; > > case USB_PORT_FEAT_RESET: > @@ -3722,7 +3722,7 @@ static int dwc2_hcd_hub_control(struct dwc2_hsotg *hsotg, u16 typereq, > "In host mode, hprt0=%08x\n", hprt0); > dwc2_writel(hsotg, hprt0, HPRT0); > if (!pwr) > - dwc2_vbus_supply_init(hsotg); > + retval = dwc2_vbus_supply_init(hsotg); > } > > /* Clear reset bit in 10ms (FS/LS) or 50ms (HS) */ > @@ -4523,7 +4523,9 @@ static int _dwc2_hcd_resume(struct usb_hcd *hcd) > > /* Enable external vbus supply after resuming the port. */ > spin_unlock_irqrestore(&hsotg->lock, flags); > - dwc2_vbus_supply_init(hsotg); > + ret = dwc2_vbus_supply_init(hsotg); > + if (ret) > + return ret; > > /* Wait for controller to correctly update D+/D- level */ > usleep_range(3000, 5000);