lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Wed, 26 Jan 2011 10:05:57 -0500
From:	Mark Lord <kernel@...savvy.com>
To:	Dmitry Torokhov <dmitry.torokhov@...il.com>
CC:	Mauro Carvalho Chehab <mchehab@...hat.com>,
	Linus Torvalds <torvalds@...ux-foundation.org>,
	Linux Kernel <linux-kernel@...r.kernel.org>,
	linux-input@...r.kernel.org, linux-media@...r.kernel.org
Subject: Re: 2.6.36/2.6.37: broken compatibility with userspace input-utils
 ?

On 11-01-25 09:00 PM, Dmitry Torokhov wrote:
> On Tue, Jan 25, 2011 at 03:29:14PM -0800, Dmitry Torokhov wrote:
>> On Tue, Jan 25, 2011 at 05:22:09PM -0500, Mark Lord wrote:
>>> On 11-01-25 05:00 PM, Mauro Carvalho Chehab wrote:
>>>> Em 25-01-2011 18:54, Dmitry Torokhov escreveu:
..
>>>>> That has been done as well; we have 2 new ioctls and kept 2 old ioctls.
>>>
>>> That's the problem: you did NOT keep the two old ioctls().
>>> Those got changed too.. so now we have four NEW ioctls(),
>>> none of which backward compatible with userspace.
>>>
>>
>> Please calm down. This, in fact, is not new vs old ioctl problem but
>> rather particular driver (or rather set of drivers) implementation
>> issue. Even if we drop the new ioctls and convert the RC code to use the
>> old ones you'd be observing the same breakage as RC code responds with
>> -EINVAL to not-yet-established mappings.
>>
>> I'll see what can be done for these drivers; I guess we could supply a
>> fake KEY_RESERVED entry for not mapped scancodes if there are mapped
>> scancodes "above" current one. That should result in the same behavior
>> for RCs as before.
>>
>
> I wonder if the patch below is all that is needed...


Nope. Does not work here:

$ lsinput
protocol version mismatch (expected 65536, got 65537)



>Input: ir-keymap - return KEY_RESERVED for unknown mappings
>
>Do not respond with -EINVAL to EVIOCGKEYCODE for not-yet-mapped scancodes,
>but rather return KEY_RESERVED.
>
>This fixes breakage with Ubuntu's input-kbd utility that stopped returning
>full keymaps for remote controls.
>
>Signed-off-by: Dmitry Torokhov <dtor@...l.ru>
>---
>
> drivers/media/IR/ir-keytable.c |   28 +++++++++++++++++-----------
> 1 files changed, 17 insertions(+), 11 deletions(-)
>
>
>diff --git a/drivers/media/IR/ir-keytable.c b/drivers/media/IR/ir-keytable.c
>index f60107c..c4645d7 100644
>--- a/drivers/media/IR/ir-keytable.c
>+++ b/drivers/media/IR/ir-keytable.c
>@@ -374,21 +374,27 @@ static int ir_getkeycode(struct input_dev *dev,
> 		index = ir_lookup_by_scancode(rc_tab, scancode);
> 	}
> 
>-	if (index >= rc_tab->len) {
>-		if (!(ke->flags & INPUT_KEYMAP_BY_INDEX))
>-			IR_dprintk(1, "unknown key for scancode 0x%04x\n",
>-				   scancode);
>+	if (index < rc_tab->len) {
>+		entry = &rc_tab->scan[index];
>+
>+		ke->index = index;
>+		ke->keycode = entry->keycode;
>+		ke->len = sizeof(entry->scancode);
>+		memcpy(ke->scancode, &entry->scancode, sizeof(entry->scancode));
>+
>+	} else if (!(ke->flags & INPUT_KEYMAP_BY_INDEX)) {
>+		/*
>+		 * We do not really know the valid range of scancodes
>+		 * so let's respond with KEY_RESERVED to anything we
>+		 * do not have mapping for [yet].
>+		 */
>+		ke->index = index;
>+		ke->keycode = KEY_RESERVED;
>+	} else {
> 		retval = -EINVAL;
> 		goto out;
> 	}
> 
>-	entry = &rc_tab->scan[index];
>-
>-	ke->index = index;
>-	ke->keycode = entry->keycode;
>-	ke->len = sizeof(entry->scancode);
>-	memcpy(ke->scancode, &entry->scancode, sizeof(entry->scancode));
>-
> 	retval = 0;
> 
> out:
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ