Patch "uvc: Forward compat ioctls to their handlers directly" has been added to the 4.6-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
uvc: Forward compat ioctls to their handlers directly
to the 4.6-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
uvc-forward-compat-ioctls-to-their-handlers-directly.patch
and it can be found in the queue-4.6 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
a44323e2a8f342848bb77e8e04fcd85fcb91b3b4Mon Sep 17 00:00:00 2001
From: Andy Lutomirski <[email protected]>
Date: Tue, 24 May 2016 15:13:02 -0700
Subject: uvc: Forward compat ioctls to their handlers directly
From: Andy Lutomirski <[email protected]>
commit a44323e2a8f342848bb77e8e04fcd85fcb91b3b4 upstream.
The current code goes through a lot of indirection just to call a known handler. Simplify it: just call the handlers directly.
--- drivers/media/usb/uvc/uvc_v4l2.c | 39 ++++++++++++++++++--------------------- 1 file changed, 18 insertions(+), 21 deletions(-)
drivers/media/usb/uvc/uvc_v4l2.c +18 -21
@@ -1408,47 +1408,44 @@ static int uvc_v4l2_put_xu_query(const sstatic long uvc_v4l2_compat_ioctl32 (struct file *file,unsigned int cmd,unsigned long arg) { +struct uvc_fh *handle = file->private_data;union {struct uvc_xu_control_mapping xmap;struct uvc_xu_control_query xqry; } karg;void __user *up =compat_ptr (arg); -mm_segment_t old_fs;long ret;switch (cmd) {case UVCIOC_CTRL_MAP32 : - cmd =UVCIOC_CTRL_MAP ; ret =uvc_v4l2_get_xu_mapping (&karg.xmap, up); +if (ret) +return ret; + ret =uvc_ioctl_ctrl_map (handle->chain, &karg.xmap); +if (ret) +return ret; + ret =uvc_v4l2_put_xu_mapping (&karg.xmap, up); +if (ret) +return ret; +break ;case UVCIOC_CTRL_QUERY32 : - cmd =UVCIOC_CTRL_QUERY ; ret =uvc_v4l2_get_xu_query (&karg.xqry, up); +if (ret) +return ret; + ret =uvc_xu_ctrl_query (handle->chain, &karg.xqry); +if (ret) +return ret; + ret =uvc_v4l2_put_xu_query (&karg.xqry, up); +if (ret) +return ret;break ;default :return -ENOIOCTLCMD ; } - old_fs =get_fs (); -set_fs (KERNEL_DS ); - ret =video_ioctl2 (file, cmd, (unsigned long )&karg); -set_fs (old_fs); - -if (ret <0 ) -return ret; - -switch (cmd) { -case UVCIOC_CTRL_MAP : - ret =uvc_v4l2_put_xu_mapping (&karg.xmap, up); -break ; - -case UVCIOC_CTRL_QUERY : - ret =uvc_v4l2_put_xu_query (&karg.xqry, up); -break ; - } -return ret; }#endif
Patches currently in stable-queue which might be from [email protected] are
queue-4.6/kprobes-x86-clear-tf-bit-in-fault-on-single-stepping.patch queue-4.6/uvc-forward-compat-ioctls-to-their-handlers-directly.patch