mirror of
https://github.com/tbsdtv/linux_media.git
synced 2025-07-23 20:51:03 +02:00
media: v4l2: prepare compat-ioctl rework
The v4l2-compat-ioctl32() currently takes an extra round trip through user space pointers when converting the data structure formats. In particular, this involves using the compat_alloc_user_space() and copy_in_user() helpers that often lead to worse compat handlers compared to using in_compat_syscall() checks when copying the data. The native implementation already gained a simpler method to deal with the conversion for the time32 conversion. Hook into the same places to provide a location for reading and writing user space data from inside of the generic video_usercopy() helper. Hans Verkuil rewrote the video_get_user() function here to simplify the zeroing of the extra input fields and fixed a couple of bugs in the original implementation. [hverkuil: fix: CHECK: Please don't use multiple blank lines] Co-developed-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
This commit is contained in:
committed by
Mauro Carvalho Chehab
parent
3650b228f8
commit
8dbcc3fa38
@@ -686,6 +686,16 @@ long int v4l2_compat_ioctl32(struct file *file, unsigned int cmd,
|
||||
unsigned long arg);
|
||||
#endif
|
||||
|
||||
unsigned int v4l2_compat_translate_cmd(unsigned int cmd);
|
||||
int v4l2_compat_get_user(void __user *arg, void *parg, unsigned int cmd);
|
||||
int v4l2_compat_put_user(void __user *arg, void *parg, unsigned int cmd);
|
||||
int v4l2_compat_get_array_args(struct file *file, void *mbuf,
|
||||
void __user *user_ptr, size_t array_size,
|
||||
unsigned int cmd, void *arg);
|
||||
int v4l2_compat_put_array_args(struct file *file, void __user *user_ptr,
|
||||
void *mbuf, size_t array_size,
|
||||
unsigned int cmd, void *arg);
|
||||
|
||||
/**
|
||||
* typedef v4l2_kioctl - Typedef used to pass an ioctl handler.
|
||||
*
|
||||
|
Reference in New Issue
Block a user