Commit b0579fc089808b68c53a6a95d043db034468116c
Exists in
master
and in
20 other branches
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input: Input: evdev - fix EVIOCSABS regression Input: evdev - fix Ooops in EVIOCGABS/EVIOCSABS
Showing 1 changed file Side-by-side Diff
drivers/input/evdev.c
... | ... | @@ -669,6 +669,9 @@ |
669 | 669 | |
670 | 670 | if ((_IOC_NR(cmd) & ~ABS_MAX) == _IOC_NR(EVIOCGABS(0))) { |
671 | 671 | |
672 | + if (!dev->absinfo) | |
673 | + return -EINVAL; | |
674 | + | |
672 | 675 | t = _IOC_NR(cmd) & ABS_MAX; |
673 | 676 | abs = dev->absinfo[t]; |
674 | 677 | |
675 | 678 | |
... | ... | @@ -680,9 +683,12 @@ |
680 | 683 | } |
681 | 684 | } |
682 | 685 | |
683 | - if (_IOC_DIR(cmd) == _IOC_READ) { | |
686 | + if (_IOC_DIR(cmd) == _IOC_WRITE) { | |
684 | 687 | |
685 | 688 | if ((_IOC_NR(cmd) & ~ABS_MAX) == _IOC_NR(EVIOCSABS(0))) { |
689 | + | |
690 | + if (!dev->absinfo) | |
691 | + return -EINVAL; | |
686 | 692 | |
687 | 693 | t = _IOC_NR(cmd) & ABS_MAX; |
688 | 694 |