kgdboc,input: Fix regression with keyboard release key and early debugging
authorJason Wessel <jason.wessel@windriver.com>
Wed, 1 Dec 2010 19:01:01 +0000 (13:01 -0600)
committerJason Wessel <jason.wessel@windriver.com>
Tue, 14 Dec 2010 04:44:03 +0000 (22:44 -0600)
commit8863ada9c47503bb93eba5e3a9ba88e6311db31f
tree11a6804da54266ec7cc219d25fccf02049d8838b
parente8a7e48bb248a1196484d3f8afa53bded2b24e71
kgdboc,input: Fix regression with keyboard release key and early debugging

The commit 111c182340cd22e238ab1cc6564df336c6ebd7cb (kgdboc: reset
input devices (keyboards) when exiting debugger) introduced a
regression in early debugging such that you get a kernel oops on
continue (with the go command) if you boot a kernel with:

    earlyprintk=vga ekgdboc=kbd kgdbwait

The restore kgdboc_restore_input() routine schedules work for the
purpose of sending key release events for any keys that were in the
depressed state prior to entering the kernel debugger.  A simple fix
to the crash is to not invoke the schedule_work() if the kernel
system_state is anything other than SYSTEM_RUNNING.

Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
Acked-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Reviewed-by: Sergei Shtylyov <sshtylyov@mvista.com>
drivers/serial/kgdboc.c