From: "\"Hatayama, Daisuke/畑山 大輔\"" <d.hatayama@jp.fujitsu.com>
To: ebiederm@xmission.com, Vivek Goyal <vgoyal@redhat.com>
Cc: masami.hiramatsu.pt@hitachi.com, hidehiro.kawai.ez@hitachi.com,
kexec@lists.infradead.org, linux-kernel@vger.kernel.org,
bhe@redhat.com
Subject: [PATCH v2] kernel/panic/kexec: fix "crash_kexec_post_notifiers" option issue in oops path
Date: Sat, 07 Mar 2015 01:31:01 +0900 [thread overview]
Message-ID: <54F9D645.2050008@jp.fujitsu.com> (raw)
The commit f06e5153f4ae2e2f3b0300f0e260e40cb7fefd45 introduced
"crash_kexec_post_notifiers" kernel boot option, which toggles
wheather panic() calls crash_kexec() before panic_notifiers and dump
kmsg or after.
The problem is that the commit overlooks panic_on_oops kernel boot
option. If it is enabled, crash_kexec() is called directly without
going through panic() in oops path.
To fix this issue, this patch adds a check to
"crash_kexec_post_notifiers" in the condition of kexec_should_crash().
Also, put a comment in kexec_should_crash() to explain not obvious
things on this patch.
Signed-off-by: HATAYAMA Daisuke <d.hatayama@jp.fujitsu.com>
Acked-by: Baoquan He <bhe@redhat.com>
Tested-by: Hidehiro Kawai <hidehiro.kawai.ez@hitachi.com>
Reviewed-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
---
include/linux/kernel.h | 3 +++
kernel/kexec.c | 11 +++++++++++
kernel/panic.c | 2 +-
3 files changed, 15 insertions(+), 1 deletion(-)
diff --git a/include/linux/kernel.h b/include/linux/kernel.h
index d6d630d..07483c7 100644
--- a/include/linux/kernel.h
+++ b/include/linux/kernel.h
@@ -426,6 +426,9 @@ extern int panic_on_unrecovered_nmi;
extern int panic_on_io_nmi;
extern int panic_on_warn;
extern int sysctl_panic_on_stackoverflow;
+
+extern bool crash_kexec_post_notifiers;
+
/*
* Only to be used by arch init code. If the user over-wrote the default
* CONFIG_PANIC_TIMEOUT, honor it.
diff --git a/kernel/kexec.c b/kernel/kexec.c
index 38c25b1..5bf6077 100644
--- a/kernel/kexec.c
+++ b/kernel/kexec.c
@@ -84,6 +84,17 @@ struct resource crashk_low_res = {
int kexec_should_crash(struct task_struct *p)
{
+ /*
+ * If crash_kexec_post_notifiers is enabled, don't run
+ * crash_kexec() here yet, which must be run after panic
+ * notifiers in panic().
+ */
+ if (crash_kexec_post_notifiers)
+ return 0;
+ /*
+ * There are 4 panic() calls in do_exit() path, each of which
+ * calls corresponds to each of these 4 conditions.
+ */
if (in_interrupt() || !p->pid || is_global_init(p) || panic_on_oops)
return 1;
return 0;
diff --git a/kernel/panic.c b/kernel/panic.c
index 8136ad7..79ca912 100644
--- a/kernel/panic.c
+++ b/kernel/panic.c
@@ -32,7 +32,7 @@ static unsigned long tainted_mask;
static int pause_on_oops;
static int pause_on_oops_flag;
static DEFINE_SPINLOCK(pause_on_oops_lock);
-static bool crash_kexec_post_notifiers;
+bool crash_kexec_post_notifiers;
int panic_on_warn __read_mostly;
int panic_timeout = CONFIG_PANIC_TIMEOUT;
--
1.9.3
_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec
WARNING: multiple messages have this Message-ID (diff)
From: "\"Hatayama, Daisuke/畑山 大輔\"" <d.hatayama@jp.fujitsu.com>
To: ebiederm@xmission.com, Vivek Goyal <vgoyal@redhat.com>
Cc: masami.hiramatsu.pt@hitachi.com, hidehiro.kawai.ez@hitachi.com,
bhe@redhat.com, linux-kernel@vger.kernel.org,
kexec@lists.infradead.org
Subject: [PATCH v2] kernel/panic/kexec: fix "crash_kexec_post_notifiers" option issue in oops path
Date: Sat, 07 Mar 2015 01:31:01 +0900 [thread overview]
Message-ID: <54F9D645.2050008@jp.fujitsu.com> (raw)
The commit f06e5153f4ae2e2f3b0300f0e260e40cb7fefd45 introduced
"crash_kexec_post_notifiers" kernel boot option, which toggles
wheather panic() calls crash_kexec() before panic_notifiers and dump
kmsg or after.
The problem is that the commit overlooks panic_on_oops kernel boot
option. If it is enabled, crash_kexec() is called directly without
going through panic() in oops path.
To fix this issue, this patch adds a check to
"crash_kexec_post_notifiers" in the condition of kexec_should_crash().
Also, put a comment in kexec_should_crash() to explain not obvious
things on this patch.
Signed-off-by: HATAYAMA Daisuke <d.hatayama@jp.fujitsu.com>
Acked-by: Baoquan He <bhe@redhat.com>
Tested-by: Hidehiro Kawai <hidehiro.kawai.ez@hitachi.com>
Reviewed-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
---
include/linux/kernel.h | 3 +++
kernel/kexec.c | 11 +++++++++++
kernel/panic.c | 2 +-
3 files changed, 15 insertions(+), 1 deletion(-)
diff --git a/include/linux/kernel.h b/include/linux/kernel.h
index d6d630d..07483c7 100644
--- a/include/linux/kernel.h
+++ b/include/linux/kernel.h
@@ -426,6 +426,9 @@ extern int panic_on_unrecovered_nmi;
extern int panic_on_io_nmi;
extern int panic_on_warn;
extern int sysctl_panic_on_stackoverflow;
+
+extern bool crash_kexec_post_notifiers;
+
/*
* Only to be used by arch init code. If the user over-wrote the default
* CONFIG_PANIC_TIMEOUT, honor it.
diff --git a/kernel/kexec.c b/kernel/kexec.c
index 38c25b1..5bf6077 100644
--- a/kernel/kexec.c
+++ b/kernel/kexec.c
@@ -84,6 +84,17 @@ struct resource crashk_low_res = {
int kexec_should_crash(struct task_struct *p)
{
+ /*
+ * If crash_kexec_post_notifiers is enabled, don't run
+ * crash_kexec() here yet, which must be run after panic
+ * notifiers in panic().
+ */
+ if (crash_kexec_post_notifiers)
+ return 0;
+ /*
+ * There are 4 panic() calls in do_exit() path, each of which
+ * calls corresponds to each of these 4 conditions.
+ */
if (in_interrupt() || !p->pid || is_global_init(p) || panic_on_oops)
return 1;
return 0;
diff --git a/kernel/panic.c b/kernel/panic.c
index 8136ad7..79ca912 100644
--- a/kernel/panic.c
+++ b/kernel/panic.c
@@ -32,7 +32,7 @@ static unsigned long tainted_mask;
static int pause_on_oops;
static int pause_on_oops_flag;
static DEFINE_SPINLOCK(pause_on_oops_lock);
-static bool crash_kexec_post_notifiers;
+bool crash_kexec_post_notifiers;
int panic_on_warn __read_mostly;
int panic_timeout = CONFIG_PANIC_TIMEOUT;
--
1.9.3
next reply other threads:[~2015-03-06 16:32 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-03-06 16:31 "Hatayama, Daisuke/畑山 大輔" [this message]
2015-03-06 16:31 ` [PATCH v2] kernel/panic/kexec: fix "crash_kexec_post_notifiers" option issue in oops path "Hatayama, Daisuke/畑山 大輔"
2015-03-06 18:08 ` Vivek Goyal
2015-03-06 18:08 ` Vivek Goyal
2015-03-23 3:47 ` Baoquan He
2015-03-23 3:47 ` Baoquan He
2015-03-23 7:19 ` Ingo Molnar
2015-03-23 7:19 ` Ingo Molnar
2015-03-23 13:37 ` Vivek Goyal
2015-03-23 13:37 ` Vivek Goyal
2015-03-23 13:50 ` Ingo Molnar
2015-03-23 13:50 ` Ingo Molnar
2015-03-23 14:31 ` Vivek Goyal
2015-03-23 14:31 ` Vivek Goyal
2015-03-23 16:01 ` Don Zickus
2015-03-23 16:01 ` Don Zickus
2015-03-24 3:58 ` Masami Hiramatsu
2015-03-24 3:58 ` Masami Hiramatsu
2015-03-23 15:36 ` Vivek Goyal
2015-03-23 15:36 ` Vivek Goyal
2015-03-24 3:30 ` Masami Hiramatsu
2015-03-24 3:30 ` Masami Hiramatsu
2015-03-24 7:11 ` Ingo Molnar
2015-03-24 7:11 ` Ingo Molnar
2015-03-24 10:27 ` Eric W. Biederman
2015-03-24 10:27 ` Eric W. Biederman
2015-03-24 14:32 ` Vivek Goyal
2015-03-24 14:32 ` Vivek Goyal
2015-03-25 15:07 ` Hidehiro Kawai
2015-03-25 15:07 ` Hidehiro Kawai
2015-03-24 14:46 ` Vivek Goyal
2015-03-24 14:46 ` Vivek Goyal
2015-03-24 16:18 ` Ingo Molnar
2015-03-24 16:18 ` Ingo Molnar
2015-03-24 17:04 ` Vivek Goyal
2015-03-24 17:04 ` Vivek Goyal
2015-05-12 8:43 ` Hidehiro Kawai
2015-05-12 8:43 ` Hidehiro Kawai
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=54F9D645.2050008@jp.fujitsu.com \
--to=d.hatayama@jp.fujitsu.com \
--cc=bhe@redhat.com \
--cc=ebiederm@xmission.com \
--cc=hidehiro.kawai.ez@hitachi.com \
--cc=kexec@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=masami.hiramatsu.pt@hitachi.com \
--cc=vgoyal@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.