diff options
author | Dmitry Torokhov <[email protected]> | 2014-07-19 16:30:31 -0700 |
---|---|---|
committer | Dmitry Torokhov <[email protected]> | 2014-07-20 13:17:42 -0700 |
commit | 50c5d36dab930b1f1b1e3348b8608aa8b9ee7610 (patch) | |
tree | adbc15400bc011ffc9ed4a716096bc3c02f73cf6 | |
parent | 67f4aef20055afec73e37e7752bc6cc74fa01dea (diff) |
Input: fix defuzzing logic
We attempt to remove noise from coordinates reported by devices in
input_handle_abs_event(), unfortunately, unless we were dropping the
event altogether, we were ignoring the adjusted value and were passing
on the original value instead.
Cc: [email protected]
Reviewed-by: Andrew de los Reyes <[email protected]>
Reviewed-by: Benson Leung <[email protected]>
Reviewed-by: David Herrmann <[email protected]>
Reviewed-by: Henrik Rydberg <[email protected]>
Signed-off-by: Dmitry Torokhov <[email protected]>
-rw-r--r-- | drivers/input/input.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/input/input.c b/drivers/input/input.c index 1c4c0db05550..29ca0bb4f561 100644 --- a/drivers/input/input.c +++ b/drivers/input/input.c @@ -257,9 +257,10 @@ static int input_handle_abs_event(struct input_dev *dev, } static int input_get_disposition(struct input_dev *dev, - unsigned int type, unsigned int code, int value) + unsigned int type, unsigned int code, int *pval) { int disposition = INPUT_IGNORE_EVENT; + int value = *pval; switch (type) { @@ -357,6 +358,7 @@ static int input_get_disposition(struct input_dev *dev, break; } + *pval = value; return disposition; } @@ -365,7 +367,7 @@ static void input_handle_event(struct input_dev *dev, { int disposition; - disposition = input_get_disposition(dev, type, code, value); + disposition = input_get_disposition(dev, type, code, &value); if ((disposition & INPUT_PASS_TO_DEVICE) && dev->event) dev->event(dev, type, code, value); |