|
From: Seiji A. <sei...@hd...> - 2012-01-05 17:40:43
|
This patch skips subsequent kmsg_dump() function calls in panic path With this patch, we can avoid deadlock due to the subsequent calls. Actually, kmsg_dump(KMSG_DUMP_EMREG) is called after kmsg_dump(KMSG_DUMP_PANIC) when panic_timeout variable is set. Signed-off-by: Seiji Aguchi <sei...@hd...> --- kernel/printk.c | 10 ++++++++++ 1 files changed, 10 insertions(+), 0 deletions(-) diff --git a/kernel/printk.c b/kernel/printk.c index 5294426..186d792 100644 --- a/kernel/printk.c +++ b/kernel/printk.c @@ -1731,6 +1731,16 @@ void kmsg_dump(enum kmsg_dump_reason reason) const char *s1, *s2; unsigned long l1, l2; unsigned long flags; + static bool panicked; + + /* + * kmsg_dump() is skipped because we already got panic log. + */ + if (panicked) + return; + + if (reason == KMSG_DUMP_PANIC) + panicked = true; /* * Currently, "in_nmi() && reason != KMSG_DUMP_PANIC" case never happens -- 1.7.1 |