* [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 related [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 related [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
-- strict thread matches above, loose matches on Subject: below --
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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.