diff options
| author | Linus Walleij <[email protected]> | 2019-02-11 09:17:23 +0100 |
|---|---|---|
| committer | Linus Walleij <[email protected]> | 2019-02-11 09:17:23 +0100 |
| commit | e65372124cd749ebbe4ac2abe5a511d7d1ac68db (patch) | |
| tree | 1f9fd7cec6ffba19c76fff1e82c562fa1adae5da /drivers/input/misc/uinput.c | |
| parent | a3240f09307ac978270d423b542f229e2ccc07b8 (diff) | |
| parent | d13937116f1e82bf508a6325111b322c30c85eb9 (diff) | |
Merge tag 'v5.0-rc6' into devel
Linux 5.0-rc6
Diffstat (limited to 'drivers/input/misc/uinput.c')
| -rw-r--r-- | drivers/input/misc/uinput.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/input/misc/uinput.c b/drivers/input/misc/uinput.c index 8ec483e8688b..26ec603fe220 100644 --- a/drivers/input/misc/uinput.c +++ b/drivers/input/misc/uinput.c @@ -39,6 +39,7 @@ #include <linux/init.h> #include <linux/fs.h> #include <linux/miscdevice.h> +#include <linux/overflow.h> #include <linux/input/mt.h> #include "../input-compat.h" @@ -405,7 +406,7 @@ static int uinput_open(struct inode *inode, struct file *file) static int uinput_validate_absinfo(struct input_dev *dev, unsigned int code, const struct input_absinfo *abs) { - int min, max; + int min, max, range; min = abs->minimum; max = abs->maximum; @@ -417,7 +418,7 @@ static int uinput_validate_absinfo(struct input_dev *dev, unsigned int code, return -EINVAL; } - if (abs->flat > max - min) { + if (!check_sub_overflow(max, min, &range) && abs->flat > range) { printk(KERN_DEBUG "%s: abs_flat #%02x out of range: %d (min:%d/max:%d)\n", UINPUT_NAME, code, abs->flat, min, max); |