summaryrefslogtreecommitdiff
path: root/include/linux/usb/composite.h
diff options
context:
space:
mode:
authorSebastian Andrzej Siewior <bigeasy@linutronix.de>2012-10-22 22:15:05 +0200
committerFelipe Balbi <balbi@ti.com>2012-10-31 15:07:00 +0200
commit0f9df939385527049c8062a099fbfa1479fe7ce0 (patch)
tree355113ab013a0ab8b3719c3b45eb59f5ef027e09 /include/linux/usb/composite.h
parentd0eca719dd11ad0619e8dd6a1f3eceb95b0216dd (diff)
downloadlwn-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