From: Rabin Vincent Date: Mon, 21 May 2012 08:08:42 +0000 (+0530) Subject: vt: fix race in vt_waitactive() X-Git-Tag: omap-cleanup-sparseirq-for-v3.7~178 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2fc46915ecfbc51afcf995901f6ade7c3d503a25;p=pandora-kernel.git 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 Acked-by: Alan Cox Signed-off-by: Greg Kroah-Hartman --- Reading git-diff-tree failed