vt: fix a potential race in the VT_WAITACTIVE handler
Subsystems (2)
PATCH 1/1 vt: fix a potential race in the VT_WAITACTIVE handler
From: Michal Januszewski <[email protected]>
On a multiprocessor machine the VT_WAITACTIVE ioctl call may return 0 if fg_console has already been updated in redraw_screen(), but the console switch itself hasn't been completed. Fix this by checking fg_console in vt_waitactive() with the console sem held.
Signed-off-by Michal Januszewski <[email protected]>
Signed-off-by Antonino Daplas <[email protected]>
---
drivers/char/vt_ioctl.c | 6 +++++- 1 files changed, 5 insertions(+), 1 deletions(-)
drivers/char/vt_ioctl.c +5 -1
@@ -1041,8 +1041,12 @@ int vt_waitactive(int vt)for (;;) {set_current_state (TASK_INTERRUPTIBLE ); retval =0 ; -if (vt == fg_console) +acquire_console_sem (); +if (vt == fg_console) { +release_console_sem ();break ; + } +release_console_sem (); retval = -EINTR ;if (signal_pending (current))break ;
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV