rcu_read_unlock();
 
-       add_input_randomness(vals->type, vals->code, vals->value);
-
        /* trigger auto repeat for key events */
        if (test_bit(EV_REP, dev->evbit) && test_bit(EV_KEY, dev->evbit)) {
                for (v = vals; v != vals + count; v++) {
 static void input_handle_event(struct input_dev *dev,
                               unsigned int type, unsigned int code, int value)
 {
-       int disposition;
+       int disposition = input_get_disposition(dev, type, code, &value);
 
-       disposition = input_get_disposition(dev, type, code, &value);
+       if (disposition != INPUT_IGNORE_EVENT && type != EV_SYN)
+               add_input_randomness(type, code, value);
 
        if ((disposition & INPUT_PASS_TO_DEVICE) && dev->event)
                dev->event(dev, type, code, value);