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>
This commit is contained in:
Hans Verkuil 2018-05-11 05:32:24 -04:00 committed by Mauro Carvalho Chehab
parent eba09b5b3d
commit 73a110623e
5 changed files with 33 additions and 31 deletions

View file

@ -658,18 +658,6 @@ void v4l_printk_ioctl(const char *prefix, unsigned int cmd);
struct video_device;
/**
* v4l2_ioctl_get_lock - get the mutex (if any) that it is need to lock for
* a given command.
*
* @vdev: Pointer to struct &video_device.
* @cmd: Ioctl name.
*
* .. note:: Internal use only. Should not be used outside V4L2 core.
*/
struct mutex *v4l2_ioctl_get_lock(struct video_device *vdev, unsigned int cmd);
/* names for fancy debug output */
extern const char *v4l2_field_names[];
extern const char *v4l2_type_names[];