diff options
author | Sebastian Andrzej Siewior <bigeasy@linutronix.de> | 2012-10-22 22:15:05 +0200 |
---|---|---|
committer | Felipe Balbi <balbi@ti.com> | 2012-10-31 15:07:00 +0200 |
commit | 0f9df939385527049c8062a099fbfa1479fe7ce0 (patch) | |
tree | 355113ab013a0ab8b3719c3b45eb59f5ef027e09 /include/linux/usb/composite.h | |
parent | d0eca719dd11ad0619e8dd6a1f3eceb95b0216dd (diff) | |
download | lwn-0f9df939385527049c8062a099fbfa1479fe7ce0.tar.gz lwn-0f9df939385527049c8062a099fbfa1479fe7ce0.zip |
usb: gadget: uvc: fix error path in uvc_function_bind()
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: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Felipe Balbi <balbi@ti.com>
Diffstat (limited to 'include/linux/usb/composite.h')
0 files changed, 0 insertions, 0 deletions