From 7b5dfcb84950ac2b133572adb30fb27ad12db163 Mon Sep 17 00:00:00 2001 From: Alan Cox Date: Tue, 1 Jun 2010 22:52:54 +0200 Subject: [PATCH] --- yaml --- r: 207899 b: refs/heads/master c: e33ac1c10b6baaac68d18d931e120d8b96e8c5f8 h: refs/heads/master i: 207897: a790122addf404335c3822ca7642d3fc6f569501 207895: 708031ae5f5619311f8bff66a578a449bdde245f v: v3 --- [refs] | 2 +- trunk/drivers/char/selection.c | 4 ++++ trunk/drivers/char/vt.c | 7 ++++--- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index e958b9f7c43f..945b209fc04b 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: d87d9b7d19f04b16c4406d3c0feeca10090e0ada +refs/heads/master: e33ac1c10b6baaac68d18d931e120d8b96e8c5f8 diff --git a/trunk/drivers/char/selection.c b/trunk/drivers/char/selection.c index f97b9e848064..6e79340d732f 100644 --- a/trunk/drivers/char/selection.c +++ b/trunk/drivers/char/selection.c @@ -26,6 +26,7 @@ #include #include #include +#include /* Don't take this from : 011-015 on the screen aren't spaces */ #define isspace(c) ((c) == ' ') @@ -312,6 +313,8 @@ int paste_selection(struct tty_struct *tty) struct tty_ldisc *ld; DECLARE_WAITQUEUE(wait, current); + lock_kernel(); + acquire_console_sem(); poke_blanked_console(); release_console_sem(); @@ -335,5 +338,6 @@ int paste_selection(struct tty_struct *tty) __set_current_state(TASK_RUNNING); tty_ldisc_deref(ld); + unlock_kernel(); return 0; } diff --git a/trunk/drivers/char/vt.c b/trunk/drivers/char/vt.c index 82f64ac21191..9f67ad919a4a 100644 --- a/trunk/drivers/char/vt.c +++ b/trunk/drivers/char/vt.c @@ -287,8 +287,12 @@ static inline unsigned short *screenpos(struct vc_data *vc, int offset, int view return p; } +/* Called from the keyboard irq path.. */ static inline void scrolldelta(int lines) { + /* FIXME */ + /* scrolldelta needs some kind of consistency lock, but the BKL was + and still is not protecting versus the scheduled back end */ scrollback_delta += lines; schedule_console_callback(); } @@ -2616,8 +2620,6 @@ int tioclinux(struct tty_struct *tty, unsigned long arg) return -EFAULT; ret = 0; - lock_kernel(); - switch (type) { case TIOCL_SETSEL: @@ -2692,7 +2694,6 @@ int tioclinux(struct tty_struct *tty, unsigned long arg) ret = -EINVAL; break; } - unlock_kernel(); return ret; }