]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - drivers/char/keyboard.c
Input: fix checking whether new keycode fits size-wise
[karo-tx-linux.git] / drivers / char / keyboard.c
index 7b19e02f112fd585d02fe48e4eb1eb8c2a0001cc..1ddaabeb8ef89acc25ae47262179077fe5d0deea 100644 (file)
@@ -198,10 +198,10 @@ int setkeycode(unsigned int scancode, unsigned int keycode)
 
        if (scancode >= dev->keycodemax)
                return -EINVAL;
-       if (keycode > KEY_MAX)
-               return -EINVAL;
        if (keycode < 0 || keycode > KEY_MAX)
                return -EINVAL;
+       if (dev->keycodesize < sizeof(keycode) && (keycode >> (dev->keycodesize * 8)))
+               return -EINVAL;
 
        oldkey = SET_INPUT_KEYCODE(dev, scancode, keycode);