• Aaro Koskinen's avatar
    USB: omap_udc: fix crashes on probe error and module removal · 99f70036
    Aaro Koskinen authored
    We currently crash if usb_add_gadget_udc_release() fails, since the
    udc->done is not initialized until in the remove function.
    Furthermore, on module removal the udc data is accessed although
    the release function is already triggered by usb_del_gadget_udc()
    early in the function.
    
    Fix by rewriting the release and remove functions, basically moving
    all the cleanup into the release function, and doing the completion
    only in the module removal case.
    
    The patch fixes omap_udc module probe with a failing gadged, and also
    allows the removal of omap_udc. Tested by running "modprobe omap_udc;
    modprobe -r omap_udc" in a loop.
    Signed-off-by: default avatarAaro Koskinen <aaro.koskinen@iki.fi>
    Signed-off-by: default avatarFelipe Balbi <felipe.balbi@linux.intel.com>
    99f70036
omap_udc.c 75.8 KB