diff options
| author | Hans Verkuil <hansverk@cisco.com> | 2018-05-11 12:32:24 +0300 | 
|---|---|---|
| committer | Mauro Carvalho Chehab <mchehab+samsung@kernel.org> | 2018-05-28 23:31:44 +0300 | 
| commit | 73a110623e7b7592defea69f028cccae495d69a4 (patch) | |
| tree | 9b1c21779d0317c9d18715cb9ce7197e8f2e0117 /drivers/media/v4l2-core/v4l2-dev.c | |
| parent | eba09b5b3dfb1b79db4428b6f379f68db4b62056 (diff) | |
| download | linux-73a110623e7b7592defea69f028cccae495d69a4.tar.xz | |
media: v4l2-core: push taking ioctl mutex down to ioctl handler
The ioctl serialization mutex (vdev->lock or q->lock for vb2 queues)
was taken at the highest level in v4l2-dev.c. This prevents more
fine-grained locking since at that level we cannot examine the ioctl
arguments, we can only do that after video_usercopy is called.
So push the locking down to __video_do_ioctl() and subdev_do_ioctl_lock().
This also allows us to make a few functions in v4l2-ioctl.c static and
video_usercopy() is no longer exported.
The locking scheme is not changed by this patch, just pushed down.
Signed-off-by: Hans Verkuil <hansverk@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
Diffstat (limited to 'drivers/media/v4l2-core/v4l2-dev.c')
| -rw-r--r-- | drivers/media/v4l2-core/v4l2-dev.c | 6 | 
1 files changed, 0 insertions, 6 deletions
diff --git a/drivers/media/v4l2-core/v4l2-dev.c b/drivers/media/v4l2-core/v4l2-dev.c index c4f4357e9ca4..4ffd7d60a901 100644 --- a/drivers/media/v4l2-core/v4l2-dev.c +++ b/drivers/media/v4l2-core/v4l2-dev.c @@ -360,14 +360,8 @@ static long v4l2_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)  	int ret = -ENODEV;  	if (vdev->fops->unlocked_ioctl) { -		struct mutex *lock = v4l2_ioctl_get_lock(vdev, cmd); - -		if (lock && mutex_lock_interruptible(lock)) -			return -ERESTARTSYS;  		if (video_is_registered(vdev))  			ret = vdev->fops->unlocked_ioctl(filp, cmd, arg); -		if (lock) -			mutex_unlock(lock);  	} else  		ret = -ENOTTY;  | 
