OSDN Git Service

[media] soc_camera: always release queue for queue owner
authorHans Verkuil <hans.verkuil@cisco.com>
Mon, 15 Jun 2015 11:33:40 +0000 (08:33 -0300)
committerMauro Carvalho Chehab <mchehab@osg.samsung.com>
Tue, 11 Aug 2015 12:53:33 +0000 (09:53 -0300)
Always release the queue if the owner closes its filehandle and not when
it is the last open filehandle.

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 0b09281..9087fed 100644 (file)
@@ -788,20 +788,21 @@ static int soc_camera_close(struct file *file)
        struct soc_camera_host *ici = to_soc_camera_host(icd->parent);
 
        mutex_lock(&ici->host_lock);
+       if (icd->streamer == file) {
+               if (ici->ops->init_videobuf2)
+                       vb2_queue_release(&icd->vb2_vidq);
+               icd->streamer = NULL;
+       }
        icd->use_count--;
        if (!icd->use_count) {
                pm_runtime_suspend(&icd->vdev->dev);
                pm_runtime_disable(&icd->vdev->dev);
 
-               if (ici->ops->init_videobuf2)
-                       vb2_queue_release(&icd->vb2_vidq);
                __soc_camera_power_off(icd);
 
                soc_camera_remove_device(icd);
        }
 
-       if (icd->streamer == file)
-               icd->streamer = NULL;
        mutex_unlock(&ici->host_lock);
 
        module_put(ici->ops->owner);