Commit 82e7d9f7 authored by Dmitry Torokhov's avatar Dmitry Torokhov Committed by Greg Kroah-Hartman

Input: rc-keymap - return KEY_RESERVED for unknown mappings

commit 54e74b87 upstream.

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.
Tested-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
Tested-by: default avatarMark Lord <kernel@teksavvy.com>
Signed-off-by: default avatarDmitry Torokhov <dtor@mail.ru>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent c0b18d3b
...@@ -374,14 +374,7 @@ static int ir_getkeycode(struct input_dev *dev, ...@@ -374,14 +374,7 @@ static int ir_getkeycode(struct input_dev *dev,
index = ir_lookup_by_scancode(rc_tab, scancode); index = ir_lookup_by_scancode(rc_tab, scancode);
} }
if (index >= rc_tab->len) { if (index < rc_tab->len) {
if (!(ke->flags & INPUT_KEYMAP_BY_INDEX))
IR_dprintk(1, "unknown key for scancode 0x%04x\n",
scancode);
retval = -EINVAL;
goto out;
}
entry = &rc_tab->scan[index]; entry = &rc_tab->scan[index];
ke->index = index; ke->index = index;
...@@ -389,6 +382,19 @@ static int ir_getkeycode(struct input_dev *dev, ...@@ -389,6 +382,19 @@ static int ir_getkeycode(struct input_dev *dev,
ke->len = sizeof(entry->scancode); ke->len = sizeof(entry->scancode);
memcpy(ke->scancode, &entry->scancode, 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;
}
retval = 0; retval = 0;
out: out:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment