diff --git a/drivers/input/input.c b/drivers/input/input.c index 880605959aa6..fbe4fe8d7550 100644 --- a/drivers/input/input.c +++ b/drivers/input/input.c @@ -153,8 +153,6 @@ static void input_pass_values(struct input_dev *dev, 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++) { @@ -371,9 +369,10 @@ static int input_get_disposition(struct input_dev *dev, 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);