]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
[media] soc_camera: fix expbuf support
authorHans Verkuil <hans.verkuil@cisco.com>
Mon, 15 Jun 2015 11:33:37 +0000 (08:33 -0300)
committerMauro Carvalho Chehab <mchehab@osg.samsung.com>
Tue, 11 Aug 2015 12:52:16 +0000 (09:52 -0300)
- For vb1 drivers just return -ENOTTY.
- For vb2 drivers allow vb2_expbuf without there being a stream owner:
  the vb2_expbuf function will return the correct error message in that case.

Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Acked-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
drivers/media/platform/soc_camera/soc_camera.c

index f24062ddd4cd6438e675d77a40610f16d23933cd..5f1e5a8cbab41b59d71173fe78bcae7cd8517c69 100644 (file)
@@ -470,14 +470,13 @@ static int soc_camera_expbuf(struct file *file, void *priv,
        struct soc_camera_device *icd = file->private_data;
        struct soc_camera_host *ici = to_soc_camera_host(icd->parent);
 
-       if (icd->streamer != file)
-               return -EBUSY;
-
        /* videobuf2 only */
        if (ici->ops->init_videobuf)
-               return -EINVAL;
-       else
-               return vb2_expbuf(&icd->vb2_vidq, p);
+               return -ENOTTY;
+
+       if (icd->streamer && icd->streamer != file)
+               return -EBUSY;
+       return vb2_expbuf(&icd->vb2_vidq, p);
 }
 
 /* Always entered with .host_lock held */