diff options
author | Rabin Vincent <rabin.vincent@stericsson.com> | 2012-05-21 10:08:42 +0200 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2012-06-15 02:10:08 +0200 |
commit | 2fc46915ecfbc51afcf995901f6ade7c3d503a25 (patch) | |
tree | 8b7b2a931020acdd349e2eb793f4e8da85239d37 /drivers/video/omap2 | |
parent | TTY: add tty_port_register_device helper (diff) | |
download | linux-2fc46915ecfbc51afcf995901f6ade7c3d503a25.tar.xz linux-2fc46915ecfbc51afcf995901f6ade7c3d503a25.zip |
vt: fix race in vt_waitactive()
pm_restore_console() is called from the suspend/resume path, and this
calls vt_move_to_console(), which calls vt_waitactive().
There's a race in this path which causes the process which requests the
suspend to sleep indefinitely waiting for an event which already
happened:
P1 P2
vt_move_to_console()
set_console()
schedule_console_callback()
vt_waitactive()
check n == fg_console +1
console_callback()
switch_screen()
vt_event_post() // no waiters
vt_event_wait() // forever
Fix the race by ensuring we're registered for the event before we check
if it's already completed.
Signed-off-by: Rabin Vincent <rabin.vincent@stericsson.com>
Acked-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/video/omap2')
0 files changed, 0 insertions, 0 deletions