mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH] kgdboc,input: Fix regression with keyboard release key and early debugging
@ 2010-12-10 20:40 Jason Wessel
  2010-12-10 21:49 ` Dmitry Torokhov
  0 siblings, 1 reply; 3+ messages in thread
From: Jason Wessel @ 2010-12-10 20:40 UTC (permalink / raw)
  To: dmitry.torokhov; +Cc: kgdb-bugreport, linux-kernel

=== NOTES excluded from the real commit ===

Dmitry, I added this commit into kgdb-next and I will send a pull
request to Linus Monday, unless someone comes up with an objection or
a different implementation.

Thanks,
Jason.

=== END NOTES ===

The commit 111c182340cd22e238ab1cc6564df336c6ebd7cb 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 input state routine which intended to send release key
events for any key that was depressed on entry to the debugger.  A
simple fix 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>
CC: Dmitry Torokhov <dmitry.torokhov@gmail.com>
---
 drivers/serial/kgdboc.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/drivers/serial/kgdboc.c b/drivers/serial/kgdboc.c
index 3374618..25a8bc5 100644
--- a/drivers/serial/kgdboc.c
+++ b/drivers/serial/kgdboc.c
@@ -90,7 +90,8 @@ static DECLARE_WORK(kgdboc_restore_input_work, kgdboc_restore_input_helper);
 
 static void kgdboc_restore_input(void)
 {
-	schedule_work(&kgdboc_restore_input_work);
+	if (likely(system_state == SYSTEM_RUNNING))
+		schedule_work(&kgdboc_restore_input_work);
 }
 
 static int kgdboc_register_kbd(char **cptr)
-- 
1.7.0.4


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] kgdboc,input: Fix regression with keyboard release key and early debugging
  2010-12-10 20:40 [PATCH] kgdboc,input: Fix regression with keyboard release key and early debugging Jason Wessel
@ 2010-12-10 21:49 ` Dmitry Torokhov
  0 siblings, 0 replies; 3+ messages in thread
From: Dmitry Torokhov @ 2010-12-10 21:49 UTC (permalink / raw)
  To: Jason Wessel; +Cc: kgdb-bugreport, linux-kernel

On Fri, Dec 10, 2010 at 02:40:43PM -0600, Jason Wessel wrote:
> === NOTES excluded from the real commit ===
> 
> Dmitry, I added this commit into kgdb-next and I will send a pull
> request to Linus Monday, unless someone comes up with an objection or
> a different implementation.

Yes, I think it makes sense. Such an early oopses are unlikely to have
input devices fully bound anyway so they'll get "reset" natually.

Thanks.

-- 
Dmitry

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [PATCH] kgdboc,input: Fix regression with keyboard release key and early debugging
  2010-12-14  5:04 [GIT PULL] kgdb/kdb tree for 2.6.37-rc5 Jason Wessel
@ 2010-12-14  5:04 ` Jason Wessel
  0 siblings, 0 replies; 3+ messages in thread
From: Jason Wessel @ 2010-12-14  5:04 UTC (permalink / raw)
  To: torvalds; +Cc: linux-kernel, kgdb-bugreport

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 |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/drivers/serial/kgdboc.c b/drivers/serial/kgdboc.c
index 3374618..25a8bc5 100644
--- a/drivers/serial/kgdboc.c
+++ b/drivers/serial/kgdboc.c
@@ -90,7 +90,8 @@ static DECLARE_WORK(kgdboc_restore_input_work, kgdboc_restore_input_helper);
 
 static void kgdboc_restore_input(void)
 {
-	schedule_work(&kgdboc_restore_input_work);
+	if (likely(system_state == SYSTEM_RUNNING))
+		schedule_work(&kgdboc_restore_input_work);
 }
 
 static int kgdboc_register_kbd(char **cptr)
-- 
1.7.0.4


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2010-12-14  5:07 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-12-10 20:40 [PATCH] kgdboc,input: Fix regression with keyboard release key and early debugging Jason Wessel
2010-12-10 21:49 ` Dmitry Torokhov
2010-12-14  5:04 [GIT PULL] kgdb/kdb tree for 2.6.37-rc5 Jason Wessel
2010-12-14  5:04 ` [PATCH] kgdboc,input: Fix regression with keyboard release key and early debugging Jason Wessel

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

Powered by JetHome