* [PATCH] setkeycode ioctl fix
@ 2003-10-24 9:37 Knut Petersen
0 siblings, 0 replies; only message in thread
From: Knut Petersen @ 2003-10-24 9:37 UTC (permalink / raw)
To: 'linux-kernel@vger.kernel.org'; +Cc: Vojtech Pavlik, torvalds
Hi everybody,
This is a bugfix for setkeycode() in /drivers/char/keyboard.c.
If we change a keycode the corresponding bit should be cleared if and
only if
this keycode is not defined any longer. I believe that this also was
intended
with the original code, but the implementation is faulty.
First off all the first three changed lines are obviously erroneus:
oldkey == truekey
is false or true, you do not need to inclose this in a for(). I believe
the author
intended INPUT_KEYCODE(dev,i) == oldkey. But fixing this alone is not
enough.
If somebody wants to interchange the definition of two keys A and B, the
normal way
is to use two setkeycode calls:
setkeycode (scancode A, keycode B);
setkeycode (scancode B, keycode A);
The old code does a clearbit(oldkey ..) call even in situations where
two keys have
the same definition, and this situation arises commonly in the situation
mentioned
above.
Both errors are fixed with this patch.
As this is a pure and obvious bugfix, please include it before releasing
2.6.0-final.
The patch is against 2.6.0-test8-bk3, but the code of keyboard.c has not
changed
for a long time.
cu,
Knut Petersen
--- drivers/char/keyboard.orig 2003-10-17 23:43:03.000000000 +0200
+++ drivers/char/keyboard.c 2003-10-24 12:17:36.000000000 +0200
@@ -204,13 +204,13 @@
oldkey = INPUT_KEYCODE(dev, scancode);
INPUT_KEYCODE(dev, scancode) = keycode;
- for (i = 0; i < dev->keycodemax; i++)
- if(keycode == oldkey)
- break;
- if (i == dev->keycodemax)
- clear_bit(oldkey, dev->keybit);
+ clear_bit(oldkey, dev->keybit);
set_bit(keycode, dev->keybit);
-
+
+ for (i = 0; i < dev->keycodemax; i++)
+ if(INPUT_KEYCODE(dev,i) == oldkey)
+ set_bit(oldkey, dev->keybit);
+
return 0;
}
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2003-10-24 9:36 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2003-10-24 9:37 [PATCH] setkeycode ioctl fix Knut Petersen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).