Skip to contentSkip to conversation

Patch "[media] media: v4l2-ctrls: Fix 64bit support in get_ctrl()" has been added to the 4.3-stable tree

PATCH [email protected] 1 participant 1 message Feb 13, 2016

Subsystems (2)
lore
Share & tools
lore

[email protected]

author maintainer Applied
#0 lore raw

This is a note to let you know that I've just added the patch titled

[media] media: v4l2-ctrls: Fix 64bit support in get_ctrl()

to the 4.3-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:
media-v4l2-ctrls-fix-64bit-support-in-get_ctrl.patch
and it can be found in the queue-4.3 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 a8077734055f870ba630563868a6349671ca8dfc Mon Sep 17 00:00:00 2001

From: Benoit Parrot <[email protected]>
Date: Mon, 21 Sep 2015 13:03:21 -0300
Subject: [media] media: v4l2-ctrls: Fix 64bit support in get_ctrl()

From: Benoit Parrot <[email protected]>

commit a8077734055f870ba630563868a6349671ca8dfc upstream.

When trying to use v4l2_ctrl_g_ctrl_int64() to retrieve a V4L2_CTRL_TYPE_INTEGER64 type value the internal helper function get_ctrl() would prematurely exit because for this control type the 'is_int' flag is not set. This would result in v4l2_ctrl_g_ctrl_int64 always returning 0.

Also v4l2_ctrl_g_ctrl_int64() is reading and returning the 32bit value member instead of the 64bit version, so fixing that as well.

This patch extends the condition check to allow the V4L2_CTRL_TYPE_INTEGER64 type to continue processing instead of exiting.

---
 drivers/media/v4l2-core/v4l2-ctrls.c |    6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
drivers/media/v4l2-core/v4l2-ctrls.c +3 -3
@@ -2884,7 +2884,7 @@ static int get_ctrl(struct v4l2_ctrl *ct
 	 * cur_to_user() calls below would need to be modified not to access
 	 * userspace memory when called from get_ctrl().
 	 */
-	if (!ctrl->is_int)
+	if (!ctrl->is_int && ctrl->type != V4L2_CTRL_TYPE_INTEGER64)
 		return -EINVAL;
 
 	if (ctrl->flags & V4L2_CTRL_FLAG_WRITE_ONLY)
@@ -2942,9 +2942,9 @@ s64 v4l2_ctrl_g_ctrl_int64(struct v4l2_c
 
 	/* It's a driver bug if this happens. */
 	WARN_ON(ctrl->is_ptr || ctrl->type != V4L2_CTRL_TYPE_INTEGER64);
-	c.value = 0;
+	c.value64 = 0;
 	get_ctrl(ctrl, &c);
-	return c.value;
+	return c.value64;
 }
 EXPORT_SYMBOL(v4l2_ctrl_g_ctrl_int64);
 

Patches currently in stable-queue which might be from [email protected] are

queue-4.3/media-v4l2-ctrls-fix-64bit-support-in-get_ctrl.patch