diff options
author | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2011-10-25 14:03:42 +0200 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2011-12-11 14:13:29 +0100 |
commit | 24c3aae0c740ae9837284266ea82234415721dc1 (patch) | |
tree | a6ba9f1ff29057195ef6ea9bb2ae7ea6eb99e524 | |
parent | [media] uvcvideo: Use videobuf2-vmalloc (diff) | |
download | linux-24c3aae0c740ae9837284266ea82234415721dc1.tar.xz linux-24c3aae0c740ae9837284266ea82234415721dc1.zip |
[media] uvcvideo: Handle uvc_init_video() failure in uvc_video_enable()
Turn streaming off (by selecting alternate setting 0) and disable the
video buffers queue in the uvc_video_enable() error path.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
-rw-r--r-- | drivers/media/video/uvc/uvc_video.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/media/video/uvc/uvc_video.c b/drivers/media/video/uvc/uvc_video.c index 2995f26ccae9..2e5e72825ad1 100644 --- a/drivers/media/video/uvc/uvc_video.c +++ b/drivers/media/video/uvc/uvc_video.c @@ -1283,6 +1283,11 @@ int uvc_video_enable(struct uvc_streaming *stream, int enable) return ret; } - return uvc_init_video(stream, GFP_KERNEL); -} + ret = uvc_init_video(stream, GFP_KERNEL); + if (ret < 0) { + usb_set_interface(stream->dev->udev, stream->intfnum, 0); + uvc_queue_enable(&stream->queue, 0); + } + return ret; +} |