vt: keyboard, use find_next_bit in kbd_match
authorJiri Slaby <jslaby@suse.cz>
Thu, 29 Oct 2020 11:32:21 +0000 (12:32 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 4 Nov 2020 15:43:39 +0000 (16:43 +0100)
Instead of a 'for' loop with 'test_bit's to find a bit in a range, use
find_next_bit to achieve the same in a simpler and faster manner.

Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Link: https://lore.kernel.org/r/20201029113222.32640-16-jslaby@suse.cz
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/vt/keyboard.c

index dea2f25..149f179 100644 (file)
@@ -1535,18 +1535,16 @@ static void kbd_event(struct input_handle *handle, unsigned int event_type,
 
 static bool kbd_match(struct input_handler *handler, struct input_dev *dev)
 {
-       int i;
-
        if (test_bit(EV_SND, dev->evbit))
                return true;
 
        if (test_bit(EV_KEY, dev->evbit)) {
-               for (i = KEY_RESERVED; i < BTN_MISC; i++)
-                       if (test_bit(i, dev->keybit))
-                               return true;
-               for (i = KEY_BRL_DOT1; i <= KEY_BRL_DOT10; i++)
-                       if (test_bit(i, dev->keybit))
-                               return true;
+               if (find_next_bit(dev->keybit, BTN_MISC, KEY_RESERVED) <
+                               BTN_MISC)
+                       return true;
+               if (find_next_bit(dev->keybit, KEY_BRL_DOT10 + 1,
+                                       KEY_BRL_DOT1) <= KEY_BRL_DOT10)
+                       return true;
        }
 
        return false;