summaryrefslogtreecommitdiffstats
path: root/drivers/tty/vt
diff options
context:
space:
mode:
authorAdam Borowski <kilobyte@angband.pl>2017-06-03 03:35:06 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2017-06-09 05:07:36 -0400
commit6987dc8a70976561d22450b5858fc9767788cc1c (patch)
tree83afa7420dbee39116d3953d5ea260cb76443861 /drivers/tty/vt
parentcc1e66f92bf52abfcb55bbb8d6f48fa7a922b7ce (diff)
vt: fix unchecked __put_user() in tioclinux ioctls
Only read access is checked before this call. Actually, at the moment this is not an issue, as every in-tree arch does the same manual checks for VERIFY_READ vs VERIFY_WRITE, relying on the MMU to tell them apart, but this wasn't the case in the past and may happen again on some odd arch in the future. If anyone cares about 3.7 and earlier, this is a security hole (untested) on real 80386 CPUs. Signed-off-by: Adam Borowski <kilobyte@angband.pl> CC: stable@vger.kernel.org # v3.7- Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/tty/vt')
-rw-r--r--drivers/tty/vt/vt.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/tty/vt/vt.c b/drivers/tty/vt/vt.c
index 9c9945284bcf..bacc48b0b4b8 100644
--- a/drivers/tty/vt/vt.c
+++ b/drivers/tty/vt/vt.c
@@ -2709,13 +2709,13 @@ int tioclinux(struct tty_struct *tty, unsigned long arg)
2709 * related to the kernel should not use this. 2709 * related to the kernel should not use this.
2710 */ 2710 */
2711 data = vt_get_shift_state(); 2711 data = vt_get_shift_state();
2712 ret = __put_user(data, p); 2712 ret = put_user(data, p);
2713 break; 2713 break;
2714 case TIOCL_GETMOUSEREPORTING: 2714 case TIOCL_GETMOUSEREPORTING:
2715 console_lock(); /* May be overkill */ 2715 console_lock(); /* May be overkill */
2716 data = mouse_reporting(); 2716 data = mouse_reporting();
2717 console_unlock(); 2717 console_unlock();
2718 ret = __put_user(data, p); 2718 ret = put_user(data, p);
2719 break; 2719 break;
2720 case TIOCL_SETVESABLANK: 2720 case TIOCL_SETVESABLANK:
2721 console_lock(); 2721 console_lock();
@@ -2724,7 +2724,7 @@ int tioclinux(struct tty_struct *tty, unsigned long arg)
2724 break; 2724 break;
2725 case TIOCL_GETKMSGREDIRECT: 2725 case TIOCL_GETKMSGREDIRECT:
2726 data = vt_get_kmsg_redirect(); 2726 data = vt_get_kmsg_redirect();
2727 ret = __put_user(data, p); 2727 ret = put_user(data, p);
2728 break; 2728 break;
2729 case TIOCL_SETKMSGREDIRECT: 2729 case TIOCL_SETKMSGREDIRECT:
2730 if (!capable(CAP_SYS_ADMIN)) { 2730 if (!capable(CAP_SYS_ADMIN)) {