aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephane Doyon <s.doyon@videotron.ca>2005-09-06 18:17:31 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2005-09-07 19:57:31 -0400
commit2d237c63659c098a662b1b09d43460f04c498436 (patch)
tree08a16c34d381b4d3347e353b598ccdbcc5f46c2b
parentf62c6d0a2607b2d1fdf280d4d1467a7a6e24c67d (diff)
[PATCH] Console blanking locking fix
I've had WARN_CONSOLE_UNLOCKED warnings when calling TIOCLINUX TIOCL_BLANKSCREEN and TIOCL_UNBLANKSCREEN. (I'm blind and I use a braille display. I use those functions to blank my laptop's screen so people don't read it, and hopefully to conserve power.) The warnings are from these places: do_blank_screen at drivers/char/vt.c:2754 (Not tainted) save_screen at drivers/char/vt.c:575 (Not tainted) do_unblank_screen at drivers/char/vt.c:2822 (Not tainted) set_palette at drivers/char/vt.c:2908 (Not tainted) At a glance I would think the following patch ought to fix that. Tested on one machine. Could you please tell me if this is correct and/or forward the patch where appropriate... Signed-off-by: Stephane Doyon <s.doyon@videotron.ca> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r--drivers/char/vt.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/char/vt.c b/drivers/char/vt.c
index 665103ccaee8..27b6c297906a 100644
--- a/drivers/char/vt.c
+++ b/drivers/char/vt.c
@@ -2272,7 +2272,9 @@ int tioclinux(struct tty_struct *tty, unsigned long arg)
2272 ret = paste_selection(tty); 2272 ret = paste_selection(tty);
2273 break; 2273 break;
2274 case TIOCL_UNBLANKSCREEN: 2274 case TIOCL_UNBLANKSCREEN:
2275 acquire_console_sem();
2275 unblank_screen(); 2276 unblank_screen();
2277 release_console_sem();
2276 break; 2278 break;
2277 case TIOCL_SELLOADLUT: 2279 case TIOCL_SELLOADLUT:
2278 ret = sel_loadlut(p); 2280 ret = sel_loadlut(p);
@@ -2317,8 +2319,10 @@ int tioclinux(struct tty_struct *tty, unsigned long arg)
2317 } 2319 }
2318 break; 2320 break;
2319 case TIOCL_BLANKSCREEN: /* until explicitly unblanked, not only poked */ 2321 case TIOCL_BLANKSCREEN: /* until explicitly unblanked, not only poked */
2322 acquire_console_sem();
2320 ignore_poke = 1; 2323 ignore_poke = 1;
2321 do_blank_screen(0); 2324 do_blank_screen(0);
2325 release_console_sem();
2322 break; 2326 break;
2323 case TIOCL_BLANKEDSCREEN: 2327 case TIOCL_BLANKEDSCREEN:
2324 ret = console_blanked; 2328 ret = console_blanked;