diff options
Diffstat (limited to '0001-media-uvcvideo-Prevent-setting-unavailable-flags.patch')
-rw-r--r-- | 0001-media-uvcvideo-Prevent-setting-unavailable-flags.patch | 65 |
1 files changed, 0 insertions, 65 deletions
diff --git a/0001-media-uvcvideo-Prevent-setting-unavailable-flags.patch b/0001-media-uvcvideo-Prevent-setting-unavailable-flags.patch deleted file mode 100644 index 76f2ce025..000000000 --- a/0001-media-uvcvideo-Prevent-setting-unavailable-flags.patch +++ /dev/null @@ -1,65 +0,0 @@ -From 0dc68cabdb626e33d02561529e6a4c681b72a784 Mon Sep 17 00:00:00 2001 -From: Kieran Bingham <kieran.bingham@ideasonboard.com> -Date: Wed, 21 Mar 2018 11:43:08 -0400 -Subject: [PATCH] media: uvcvideo: Prevent setting unavailable flags - -The addition of an extra operation to use the GET_INFO command -overwrites all existing flags from the uvc_ctrls table. This includes -setting all controls as supporting GET_MIN, GET_MAX, GET_RES, and -GET_DEF regardless of whether they do or not. - -Move the initialisation of these control capabilities directly to the -uvc_ctrl_fill_xu_info() call where they were originally located in that -use case, and ensure that the new functionality in uvc_ctrl_get_flags() -will only set flags based on their reported capability from the GET_INFO -call. - -Fixes: 859086ae3636 ("media: uvcvideo: Apply flags from device to actual properties") - -Cc: stable@vger.kernel.org -Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com> -Tested-by: Guennadi Liakhovetski <guennadi.liakhovetski@intel.com> -Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> -Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org> ---- - drivers/media/usb/uvc/uvc_ctrl.c | 17 +++++++++-------- - 1 file changed, 9 insertions(+), 8 deletions(-) - -diff --git a/drivers/media/usb/uvc/uvc_ctrl.c b/drivers/media/usb/uvc/uvc_ctrl.c -index 102594ec3e97..a36b4fb949fa 100644 ---- a/drivers/media/usb/uvc/uvc_ctrl.c -+++ b/drivers/media/usb/uvc/uvc_ctrl.c -@@ -1607,14 +1607,12 @@ static int uvc_ctrl_get_flags(struct uvc_device *dev, - ret = uvc_query_ctrl(dev, UVC_GET_INFO, ctrl->entity->id, dev->intfnum, - info->selector, data, 1); - if (!ret) -- info->flags = UVC_CTRL_FLAG_GET_MIN | UVC_CTRL_FLAG_GET_MAX -- | UVC_CTRL_FLAG_GET_RES | UVC_CTRL_FLAG_GET_DEF -- | (data[0] & UVC_CONTROL_CAP_GET ? -- UVC_CTRL_FLAG_GET_CUR : 0) -- | (data[0] & UVC_CONTROL_CAP_SET ? -- UVC_CTRL_FLAG_SET_CUR : 0) -- | (data[0] & UVC_CONTROL_CAP_AUTOUPDATE ? -- UVC_CTRL_FLAG_AUTO_UPDATE : 0); -+ info->flags |= (data[0] & UVC_CONTROL_CAP_GET ? -+ UVC_CTRL_FLAG_GET_CUR : 0) -+ | (data[0] & UVC_CONTROL_CAP_SET ? -+ UVC_CTRL_FLAG_SET_CUR : 0) -+ | (data[0] & UVC_CONTROL_CAP_AUTOUPDATE ? -+ UVC_CTRL_FLAG_AUTO_UPDATE : 0); - - kfree(data); - return ret; -@@ -1689,6 +1687,9 @@ static int uvc_ctrl_fill_xu_info(struct uvc_device *dev, - - info->size = le16_to_cpup((__le16 *)data); - -+ info->flags = UVC_CTRL_FLAG_GET_MIN | UVC_CTRL_FLAG_GET_MAX -+ | UVC_CTRL_FLAG_GET_RES | UVC_CTRL_FLAG_GET_DEF; -+ - ret = uvc_ctrl_get_flags(dev, ctrl, info); - if (ret < 0) { - uvc_trace(UVC_TRACE_CONTROL, --- -2.17.1 - |