• Sebastian Andrzej Siewior's avatar
    usb: gadget: uvc: fix error path in uvc_function_bind() · 0f9df939
    Sebastian Andrzej Siewior authored
    The "video->minor = -1" assigment is done in V4L2 by
    video_register_device() so it is removed here.
    Now. uvc_function_bind() calls in error case uvc_function_unbind() for
    cleanup. The problem is that uvc_function_unbind() frees the uvc struct
    and uvc_bind_config() does as well in error case of usb_add_function().
    Removing kfree() in usb_add_function() would make the patch smaller but
    it would look odd because the new allocated memory is not cleaned up.
    However it is not guaranteed that if we call usb_add_function() we also
    get to the bind function.
    Therefore the patch extracts the conditional cleanup from
    uvc_function_unbind() applies to uvc_function_bind().
    uvc_function_unbind() now contains only the complete cleanup which is
    required once everything has been registrated.
    
    Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Cc: Bhupesh Sharma <bhupesh.sharma@st.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: default avatarSebastian Andrzej Siewior <bigeasy@linutronix.de>
    Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
    0f9df939
f_uvc.c 23.4 KB