mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
[media] v4l2-subdev: Allow 32-bit compat ioctls
Add support for 32-bit ioctls with v4l-subdev device nodes. Rather than keep adding new ioctls to the list in v4l2-compat-ioctl32.c, just check if the ioctl is a non-private V4L2 ioctl and if so, call the conversion code. We keep forgetting to add new ioctls, so this is a more robust solution. In addition extend the subdev API with support for a compat32 function to convert custom v4l-subdev ioctls. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Tested-by: Sakari Ailus <sakari.ailus@linux.intel.com> Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
This commit is contained in:
parent
ab3cacf6d9
commit
ab58a30162
3 changed files with 24 additions and 95 deletions
|
@ -368,6 +368,17 @@ static long subdev_ioctl(struct file *file, unsigned int cmd,
|
|||
return video_usercopy(file, cmd, arg, subdev_do_ioctl);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_COMPAT
|
||||
static long subdev_compat_ioctl32(struct file *file, unsigned int cmd,
|
||||
unsigned long arg)
|
||||
{
|
||||
struct video_device *vdev = video_devdata(file);
|
||||
struct v4l2_subdev *sd = vdev_to_v4l2_subdev(vdev);
|
||||
|
||||
return v4l2_subdev_call(sd, core, compat_ioctl32, cmd, arg);
|
||||
}
|
||||
#endif
|
||||
|
||||
static unsigned int subdev_poll(struct file *file, poll_table *wait)
|
||||
{
|
||||
struct video_device *vdev = video_devdata(file);
|
||||
|
@ -389,6 +400,9 @@ const struct v4l2_file_operations v4l2_subdev_fops = {
|
|||
.owner = THIS_MODULE,
|
||||
.open = subdev_open,
|
||||
.unlocked_ioctl = subdev_ioctl,
|
||||
#ifdef CONFIG_COMPAT
|
||||
.compat_ioctl32 = subdev_compat_ioctl32,
|
||||
#endif
|
||||
.release = subdev_close,
|
||||
.poll = subdev_poll,
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue