Commit 403aac96 authored by Yoichi Yuasa's avatar Yoichi Yuasa Committed by Linus Torvalds

[PATCH] add return value checking of get_user() in set_vesa_blanking()

[akpm@osdl.org: bugfix]
Signed-off-by: default avatarYoichi Yuasa <yoichi_yuasa@tripeaks.co.jp>
Cc: James Simmons <jsimmons@infradead.org>
Cc: "Antonino A. Daplas" <adaplas@pol.net>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent db68b189
...@@ -152,7 +152,7 @@ static void gotoxy(struct vc_data *vc, int new_x, int new_y); ...@@ -152,7 +152,7 @@ static void gotoxy(struct vc_data *vc, int new_x, int new_y);
static void save_cur(struct vc_data *vc); static void save_cur(struct vc_data *vc);
static void reset_terminal(struct vc_data *vc, int do_clear); static void reset_terminal(struct vc_data *vc, int do_clear);
static void con_flush_chars(struct tty_struct *tty); static void con_flush_chars(struct tty_struct *tty);
static void set_vesa_blanking(char __user *p); static int set_vesa_blanking(char __user *p);
static void set_cursor(struct vc_data *vc); static void set_cursor(struct vc_data *vc);
static void hide_cursor(struct vc_data *vc); static void hide_cursor(struct vc_data *vc);
static void console_callback(struct work_struct *ignored); static void console_callback(struct work_struct *ignored);
...@@ -2369,7 +2369,7 @@ int tioclinux(struct tty_struct *tty, unsigned long arg) ...@@ -2369,7 +2369,7 @@ int tioclinux(struct tty_struct *tty, unsigned long arg)
ret = __put_user(data, p); ret = __put_user(data, p);
break; break;
case TIOCL_SETVESABLANK: case TIOCL_SETVESABLANK:
set_vesa_blanking(p); ret = set_vesa_blanking(p);
break; break;
case TIOCL_GETKMSGREDIRECT: case TIOCL_GETKMSGREDIRECT:
data = kmsg_redirect; data = kmsg_redirect;
...@@ -3313,11 +3313,15 @@ postcore_initcall(vtconsole_class_init); ...@@ -3313,11 +3313,15 @@ postcore_initcall(vtconsole_class_init);
* Screen blanking * Screen blanking
*/ */
static void set_vesa_blanking(char __user *p) static int set_vesa_blanking(char __user *p)
{ {
unsigned int mode; unsigned int mode;
get_user(mode, p + 1);
vesa_blank_mode = (mode < 4) ? mode : 0; if (get_user(mode, p + 1))
return -EFAULT;
vesa_blank_mode = (mode < 4) ? mode : 0;
return 0;
} }
void do_blank_screen(int entering_gfx) void do_blank_screen(int entering_gfx)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment