All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] input/uinput: support abs resolution
@ 2013-07-15 13:12 Benjamin Tissoires
  0 siblings, 0 replies; only message in thread
From: Benjamin Tissoires @ 2013-07-15 13:12 UTC (permalink / raw)
  To: Dmitry Torokhov, Benjamin Tissoires, linux-input, linux-kernel
  Cc: Benjamin Tissoires, Peter Hutterer

Input resolution has been added in kernel v2.6.31 with commit
ec20a022aa24fc63. However, uinput was never updated since, meaning that
devices cannot be emulated in full. User-space processes that rely on the
resolution to be accurate need this.

Resolution is added in struct uinput_user_dev in a way it won't break
current programs relying on the old implementation.

Bump the UINPUT_VERSION number to 4 to aid detection of this in user-space.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
---
 drivers/input/misc/uinput.c | 17 ++++++++++++-----
 include/linux/uinput.h      |  2 ++
 include/uapi/linux/uinput.h |  3 +++
 3 files changed, 17 insertions(+), 5 deletions(-)

diff --git a/drivers/input/misc/uinput.c b/drivers/input/misc/uinput.c
index a0a4bba..7d518b4 100644
--- a/drivers/input/misc/uinput.c
+++ b/drivers/input/misc/uinput.c
@@ -20,6 +20,8 @@
  * Author: Aristeu Sergio Rozanski Filho <aris@cathedrallabs.org>
  *
  * Changes/Revisions:
+ *	0.4	12/07/2013 (Peter Hutterer <peter.hutterer@redhat.com>)
+ *		- update uinput_user_dev struct to allow abs resolution
  *	0.3	09/04/2006 (Anssi Hannula <anssi.hannula@gmail.com>)
  *		- updated ff support for the changes in kernel interface
  *		- added MODULE_VERSION
@@ -364,9 +366,9 @@ static int uinput_setup_device(struct uinput_device *udev,
 	struct input_dev	*dev;
 	int			i;
 	int			retval;
+	size_t			size;
 
-	if (count != sizeof(struct uinput_user_dev))
-		return -EINVAL;
+	size = min_t(size_t, count, sizeof(struct uinput_user_dev));
 
 	if (!udev->dev) {
 		retval = uinput_allocate_device(udev);
@@ -376,9 +378,13 @@ static int uinput_setup_device(struct uinput_device *udev,
 
 	dev = udev->dev;
 
-	user_dev = memdup_user(buffer, sizeof(struct uinput_user_dev));
-	if (IS_ERR(user_dev))
-		return PTR_ERR(user_dev);
+	user_dev = kzalloc(sizeof(struct uinput_user_dev), GFP_KERNEL);
+	if (!user_dev)
+		return -ENOMEM;
+	if (copy_from_user(user_dev, buffer, size)) {
+		retval = -EFAULT;
+		goto exit;
+	}
 
 	udev->ff_effects_max = user_dev->ff_effects_max;
 
@@ -406,6 +412,7 @@ static int uinput_setup_device(struct uinput_device *udev,
 		input_abs_set_min(dev, i, user_dev->absmin[i]);
 		input_abs_set_fuzz(dev, i, user_dev->absfuzz[i]);
 		input_abs_set_flat(dev, i, user_dev->absflat[i]);
+		input_abs_set_res(dev, i, user_dev->absres[i]);
 	}
 
 	/* check if absmin/absmax/absfuzz/absflat are filled as
diff --git a/include/linux/uinput.h b/include/linux/uinput.h
index 0a4487d..6291a22 100644
--- a/include/linux/uinput.h
+++ b/include/linux/uinput.h
@@ -20,6 +20,8 @@
  * Author: Aristeu Sergio Rozanski Filho <aris@cathedrallabs.org>
  *
  * Changes/Revisions:
+ *	0.4	12/07/2013 (Peter Hutterer <peter.hutterer@redhat.com>)
+ *		- update uinput_user_dev struct to allow abs resolution
  *	0.3	24/05/2006 (Anssi Hannula <anssi.hannulagmail.com>)
  *		- update ff support for the changes in kernel interface
  *		- add UINPUT_VERSION
diff --git a/include/uapi/linux/uinput.h b/include/uapi/linux/uinput.h
index fe46431..f6a393b 100644
--- a/include/uapi/linux/uinput.h
+++ b/include/uapi/linux/uinput.h
@@ -20,6 +20,8 @@
  * Author: Aristeu Sergio Rozanski Filho <aris@cathedrallabs.org>
  *
  * Changes/Revisions:
+ *	0.4	12/07/2013 (Peter Hutterer <peter.hutterer@redhat.com>)
+ *		- update uinput_user_dev struct to allow abs resolution
  *	0.3	24/05/2006 (Anssi Hannula <anssi.hannulagmail.com>)
  *		- update ff support for the changes in kernel interface
  *		- add UINPUT_VERSION
@@ -133,5 +135,6 @@ struct uinput_user_dev {
 	__s32 absmin[ABS_CNT];
 	__s32 absfuzz[ABS_CNT];
 	__s32 absflat[ABS_CNT];
+	__s32 absres[ABS_CNT];
 };
 #endif /* _UAPI__UINPUT_H_ */
-- 
1.8.3.1


^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2013-07-15 13:13 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-07-15 13:12 [PATCH 1/2] input/uinput: support abs resolution Benjamin Tissoires

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.