]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blob - releases/2.6.36.2/drivers-char-vt_ioctl.c-fix-vt_openqry-error-value.patch
fixes for 4.19
[thirdparty/kernel/stable-queue.git] / releases / 2.6.36.2 / drivers-char-vt_ioctl.c-fix-vt_openqry-error-value.patch
1 From 1e0ad2881d50becaeea70ec696a80afeadf944d2 Mon Sep 17 00:00:00 2001
2 From: Graham Gower <graham.gower@gmail.com>
3 Date: Wed, 27 Oct 2010 15:33:00 -0700
4 Subject: drivers/char/vt_ioctl.c: fix VT_OPENQRY error value
5
6 From: Graham Gower <graham.gower@gmail.com>
7
8 commit 1e0ad2881d50becaeea70ec696a80afeadf944d2 upstream.
9
10 When all VT's are in use, VT_OPENQRY casts -1 to unsigned char before
11 returning it to userspace as an int. VT255 is not the next available
12 console.
13
14 Signed-off-by: Graham Gower <graham.gower@gmail.com>
15 Cc: Greg KH <greg@kroah.com>
16 Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
17 Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
18 Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
19
20 ---
21 drivers/char/vt_ioctl.c | 11 ++++++-----
22 1 file changed, 6 insertions(+), 5 deletions(-)
23
24 --- a/drivers/char/vt_ioctl.c
25 +++ b/drivers/char/vt_ioctl.c
26 @@ -503,6 +503,7 @@ int vt_ioctl(struct tty_struct *tty, str
27 struct kbd_struct * kbd;
28 unsigned int console;
29 unsigned char ucval;
30 + unsigned int uival;
31 void __user *up = (void __user *)arg;
32 int i, perm;
33 int ret = 0;
34 @@ -657,7 +658,7 @@ int vt_ioctl(struct tty_struct *tty, str
35 break;
36
37 case KDGETMODE:
38 - ucval = vc->vc_mode;
39 + uival = vc->vc_mode;
40 goto setint;
41
42 case KDMAPDISP:
43 @@ -695,7 +696,7 @@ int vt_ioctl(struct tty_struct *tty, str
44 break;
45
46 case KDGKBMODE:
47 - ucval = ((kbd->kbdmode == VC_RAW) ? K_RAW :
48 + uival = ((kbd->kbdmode == VC_RAW) ? K_RAW :
49 (kbd->kbdmode == VC_MEDIUMRAW) ? K_MEDIUMRAW :
50 (kbd->kbdmode == VC_UNICODE) ? K_UNICODE :
51 K_XLATE);
52 @@ -717,9 +718,9 @@ int vt_ioctl(struct tty_struct *tty, str
53 break;
54
55 case KDGKBMETA:
56 - ucval = (vc_kbd_mode(kbd, VC_META) ? K_ESCPREFIX : K_METABIT);
57 + uival = (vc_kbd_mode(kbd, VC_META) ? K_ESCPREFIX : K_METABIT);
58 setint:
59 - ret = put_user(ucval, (int __user *)arg);
60 + ret = put_user(uival, (int __user *)arg);
61 break;
62
63 case KDGETKEYCODE:
64 @@ -949,7 +950,7 @@ int vt_ioctl(struct tty_struct *tty, str
65 for (i = 0; i < MAX_NR_CONSOLES; ++i)
66 if (! VT_IS_IN_USE(i))
67 break;
68 - ucval = i < MAX_NR_CONSOLES ? (i+1) : -1;
69 + uival = i < MAX_NR_CONSOLES ? (i+1) : -1;
70 goto setint;
71
72 /*