Skip to content

Commit

Permalink
dwc_otg: prevent leaking URBs during enqueue
Browse files Browse the repository at this point in the history
A dwc_otg_urb would get leaked if the HCD enqueue function
failed for any reason. Free the URB at the appropriate points.
  • Loading branch information
P33M authored and popcornmix committed Nov 17, 2013
1 parent fab1f21 commit 0aa8414
Showing 1 changed file with 8 additions and 0 deletions.
8 changes: 8 additions & 0 deletions drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c
Original file line number Diff line number Diff line change
Expand Up @@ -797,11 +797,19 @@ static int dwc_otg_urb_enqueue(struct usb_hcd *hcd,
#if USB_URB_EP_LINKING
usb_hcd_unlink_urb_from_ep(hcd, urb);
#endif
DWC_FREE(dwc_otg_urb);
urb->hcpriv = NULL;
if (retval == -DWC_E_NO_DEVICE)
retval = -ENODEV;
}
}
#if USB_URB_EP_LINKING
else
{
DWC_FREE(dwc_otg_urb);
urb->hcpriv = NULL;
}
#endif
DWC_SPINUNLOCK_IRQRESTORE(dwc_otg_hcd->lock, irqflags);
return retval;
}
Expand Down

0 comments on commit 0aa8414

Please sign in to comment.