diff options
Diffstat (limited to 'drivers/hid/hid-input.c')
-rw-r--r-- | drivers/hid/hid-input.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/hid/hid-input.c b/drivers/hid/hid-input.c index f333139d1a4..b7b0d55c0ed 100644 --- a/drivers/hid/hid-input.c +++ b/drivers/hid/hid-input.c | |||
@@ -822,6 +822,13 @@ void hidinput_hid_event(struct hid_device *hid, struct hid_field *field, struct | |||
822 | return; | 822 | return; |
823 | } | 823 | } |
824 | 824 | ||
825 | /* Ignore absolute values that are out of bounds */ | ||
826 | if ((usage->type == EV_ABS && (value < field->logical_minimum || | ||
827 | value > field->logical_maximum))) { | ||
828 | dbg_hid("Ignoring out-of-range value %x\n", value); | ||
829 | return; | ||
830 | } | ||
831 | |||
825 | /* report the usage code as scancode if the key status has changed */ | 832 | /* report the usage code as scancode if the key status has changed */ |
826 | if (usage->type == EV_KEY && !!test_bit(usage->code, input->key) != value) | 833 | if (usage->type == EV_KEY && !!test_bit(usage->code, input->key) != value) |
827 | input_event(input, EV_MSC, MSC_SCAN, usage->hid); | 834 | input_event(input, EV_MSC, MSC_SCAN, usage->hid); |