[media] em28xx: fix VBI handling logic
authorMauro Carvalho Chehab <mchehab@osg.samsung.com>
Fri, 19 Sep 2014 16:02:12 +0000 (13:02 -0300)
committerMauro Carvalho Chehab <mchehab@osg.samsung.com>
Mon, 22 Sep 2014 00:07:29 +0000 (21:07 -0300)
When both VBI and video are streaming, and video stream is stopped,
a subsequent trial to restart it will fail, because S_FMT will
return -EBUSY.

That prevents applications like zvbi to work properly.

Please notice that, while this fix it fully for zvbi, the
best is to get rid of streaming_users and res_get logic as a hole.

However, this single-line patch is better to be merged at -stable.

Cc: stable@vger.kernel.org
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
drivers/media/usb/em28xx/em28xx-video.c

index 90dec2955f1ca5e790b18fa421c071c7b49aca00..41339259f30cc47747ad3d327c83767f82d01d5e 100644 (file)
@@ -1342,7 +1342,7 @@ static int vidioc_s_fmt_vid_cap(struct file *file, void *priv,
        struct em28xx *dev = video_drvdata(file);
        struct em28xx_v4l2 *v4l2 = dev->v4l2;
 
-       if (v4l2->streaming_users > 0)
+       if (vb2_is_busy(&v4l2->vb_vidq))
                return -EBUSY;
 
        vidioc_try_fmt_vid_cap(file, priv, f);