* [PATCH 0/5] Update doc and fix some issues about kdump @ 2022-01-28 11:42 Tiezhu Yang 2022-01-28 11:42 ` [PATCH 1/5] docs: kdump: update description about sysfs file system support Tiezhu Yang ` (4 more replies) 0 siblings, 5 replies; 10+ messages in thread From: Tiezhu Yang @ 2022-01-28 11:42 UTC (permalink / raw) To: Baoquan He, Jonathan Corbet, Andrew Morton, Peter Zijlstra, Marco Elver Cc: kexec, linux-doc, kasan-dev, linux-mm, linux-kernel Tiezhu Yang (5): docs: kdump: update description about sysfs file system support docs: kdump: add scp sample to write out the dump file kcsan: unset panic_on_warn before calling panic() sched: unset panic_on_warn before calling panic() kfence: unset panic_on_warn before calling panic() Documentation/admin-guide/kdump/kdump.rst | 10 +++++++--- kernel/kcsan/report.c | 10 +++++++++- kernel/sched/core.c | 11 ++++++++++- mm/kfence/report.c | 10 +++++++++- 4 files changed, 35 insertions(+), 6 deletions(-) -- 2.1.0 ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 1/5] docs: kdump: update description about sysfs file system support 2022-01-28 11:42 [PATCH 0/5] Update doc and fix some issues about kdump Tiezhu Yang @ 2022-01-28 11:42 ` Tiezhu Yang 2022-01-30 2:10 ` Baoquan He 2022-01-28 11:42 ` [PATCH 2/5] docs: kdump: add scp sample to write out the dump file Tiezhu Yang ` (3 subsequent siblings) 4 siblings, 1 reply; 10+ messages in thread From: Tiezhu Yang @ 2022-01-28 11:42 UTC (permalink / raw) To: Baoquan He, Jonathan Corbet, Andrew Morton, Peter Zijlstra, Marco Elver Cc: kexec, linux-doc, kasan-dev, linux-mm, linux-kernel After commit 6a108a14fa35 ("kconfig: rename CONFIG_EMBEDDED to CONFIG_EXPERT"), "Configure standard kernel features (for small systems)" is not exist, we should use "Configure standard kernel features (expert users)" now. Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn> --- Documentation/admin-guide/kdump/kdump.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Documentation/admin-guide/kdump/kdump.rst b/Documentation/admin-guide/kdump/kdump.rst index cb30ca3d..d187df2 100644 --- a/Documentation/admin-guide/kdump/kdump.rst +++ b/Documentation/admin-guide/kdump/kdump.rst @@ -146,9 +146,9 @@ System kernel config options CONFIG_SYSFS=y Note that "sysfs file system support" might not appear in the "Pseudo - filesystems" menu if "Configure standard kernel features (for small - systems)" is not enabled in "General Setup." In this case, check the - .config file itself to ensure that sysfs is turned on, as follows:: + filesystems" menu if "Configure standard kernel features (expert users)" + is not enabled in "General Setup." In this case, check the .config file + itself to ensure that sysfs is turned on, as follows:: grep 'CONFIG_SYSFS' .config -- 2.1.0 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH 1/5] docs: kdump: update description about sysfs file system support 2022-01-28 11:42 ` [PATCH 1/5] docs: kdump: update description about sysfs file system support Tiezhu Yang @ 2022-01-30 2:10 ` Baoquan He 0 siblings, 0 replies; 10+ messages in thread From: Baoquan He @ 2022-01-30 2:10 UTC (permalink / raw) To: Tiezhu Yang Cc: Jonathan Corbet, Andrew Morton, Peter Zijlstra, Marco Elver, kexec, linux-doc, kasan-dev, linux-mm, linux-kernel On 01/28/22 at 07:42pm, Tiezhu Yang wrote: > After commit 6a108a14fa35 ("kconfig: rename CONFIG_EMBEDDED to > CONFIG_EXPERT"), "Configure standard kernel features (for small > systems)" is not exist, we should use "Configure standard kernel > features (expert users)" now. > > Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn> > --- > Documentation/admin-guide/kdump/kdump.rst | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/Documentation/admin-guide/kdump/kdump.rst b/Documentation/admin-guide/kdump/kdump.rst > index cb30ca3d..d187df2 100644 > --- a/Documentation/admin-guide/kdump/kdump.rst > +++ b/Documentation/admin-guide/kdump/kdump.rst > @@ -146,9 +146,9 @@ System kernel config options > CONFIG_SYSFS=y > > Note that "sysfs file system support" might not appear in the "Pseudo > - filesystems" menu if "Configure standard kernel features (for small > - systems)" is not enabled in "General Setup." In this case, check the > - .config file itself to ensure that sysfs is turned on, as follows:: > + filesystems" menu if "Configure standard kernel features (expert users)" > + is not enabled in "General Setup." In this case, check the .config file > + itself to ensure that sysfs is turned on, as follows:: Nice clean up, ack. Acked-by: Baoquan He <bhe@redhat.com> ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 2/5] docs: kdump: add scp sample to write out the dump file 2022-01-28 11:42 [PATCH 0/5] Update doc and fix some issues about kdump Tiezhu Yang 2022-01-28 11:42 ` [PATCH 1/5] docs: kdump: update description about sysfs file system support Tiezhu Yang @ 2022-01-28 11:42 ` Tiezhu Yang 2022-01-30 2:46 ` Baoquan He 2022-01-28 11:42 ` [PATCH 3/5] kcsan: unset panic_on_warn before calling panic() Tiezhu Yang ` (2 subsequent siblings) 4 siblings, 1 reply; 10+ messages in thread From: Tiezhu Yang @ 2022-01-28 11:42 UTC (permalink / raw) To: Baoquan He, Jonathan Corbet, Andrew Morton, Peter Zijlstra, Marco Elver Cc: kexec, linux-doc, kasan-dev, linux-mm, linux-kernel Except cp and makedumpfile, add scp sample to write out the dump file. Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn> --- Documentation/admin-guide/kdump/kdump.rst | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Documentation/admin-guide/kdump/kdump.rst b/Documentation/admin-guide/kdump/kdump.rst index d187df2..a748e7e 100644 --- a/Documentation/admin-guide/kdump/kdump.rst +++ b/Documentation/admin-guide/kdump/kdump.rst @@ -533,6 +533,10 @@ the following command:: cp /proc/vmcore <dump-file> +or use scp to write out the dump file between hosts on a network, e.g:: + + scp /proc/vmcore remote_username@remote_ip:<dump-file> + You can also use makedumpfile utility to write out the dump file with specified options to filter out unwanted contents, e.g:: -- 2.1.0 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH 2/5] docs: kdump: add scp sample to write out the dump file 2022-01-28 11:42 ` [PATCH 2/5] docs: kdump: add scp sample to write out the dump file Tiezhu Yang @ 2022-01-30 2:46 ` Baoquan He 0 siblings, 0 replies; 10+ messages in thread From: Baoquan He @ 2022-01-30 2:46 UTC (permalink / raw) To: Tiezhu Yang Cc: Jonathan Corbet, Andrew Morton, Peter Zijlstra, Marco Elver, kexec, linux-doc, kasan-dev, linux-mm, linux-kernel On 01/28/22 at 07:42pm, Tiezhu Yang wrote: > Except cp and makedumpfile, add scp sample to write out the dump file. ~~~~~~? You mean example? I think we just give example here, but not list all cases. seems adding scp is nothing bad. Anyway, except of the concern for 'sample': Acked-by: Baoquan He <bhe@redhat.com> > > Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn> > --- > Documentation/admin-guide/kdump/kdump.rst | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/Documentation/admin-guide/kdump/kdump.rst b/Documentation/admin-guide/kdump/kdump.rst > index d187df2..a748e7e 100644 > --- a/Documentation/admin-guide/kdump/kdump.rst > +++ b/Documentation/admin-guide/kdump/kdump.rst > @@ -533,6 +533,10 @@ the following command:: > > cp /proc/vmcore <dump-file> > > +or use scp to write out the dump file between hosts on a network, e.g:: > + > + scp /proc/vmcore remote_username@remote_ip:<dump-file> > + > You can also use makedumpfile utility to write out the dump file > with specified options to filter out unwanted contents, e.g:: > > -- > 2.1.0 > ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 3/5] kcsan: unset panic_on_warn before calling panic() 2022-01-28 11:42 [PATCH 0/5] Update doc and fix some issues about kdump Tiezhu Yang 2022-01-28 11:42 ` [PATCH 1/5] docs: kdump: update description about sysfs file system support Tiezhu Yang 2022-01-28 11:42 ` [PATCH 2/5] docs: kdump: add scp sample to write out the dump file Tiezhu Yang @ 2022-01-28 11:42 ` Tiezhu Yang 2022-01-28 11:42 ` [PATCH 4/5] sched: " Tiezhu Yang 2022-01-28 11:42 ` [PATCH 5/5] kfence: " Tiezhu Yang 4 siblings, 0 replies; 10+ messages in thread From: Tiezhu Yang @ 2022-01-28 11:42 UTC (permalink / raw) To: Baoquan He, Jonathan Corbet, Andrew Morton, Peter Zijlstra, Marco Elver Cc: kexec, linux-doc, kasan-dev, linux-mm, linux-kernel As done in the full WARN() handler, panic_on_warn needs to be cleared before calling panic() to avoid recursive panics. Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn> --- kernel/kcsan/report.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/kernel/kcsan/report.c b/kernel/kcsan/report.c index 6779440..752ab33 100644 --- a/kernel/kcsan/report.c +++ b/kernel/kcsan/report.c @@ -492,8 +492,16 @@ static void print_report(enum kcsan_value_change value_change, dump_stack_print_info(KERN_DEFAULT); pr_err("==================================================================\n"); - if (panic_on_warn) + if (panic_on_warn) { + /* + * This thread may hit another WARN() in the panic path. + * Resetting this prevents additional WARN() from panicking the + * system on this thread. Other threads are blocked by the + * panic_mutex in panic(). + */ + panic_on_warn = 0; panic("panic_on_warn set ...\n"); + } } static void release_report(unsigned long *flags, struct other_info *other_info) -- 2.1.0 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 4/5] sched: unset panic_on_warn before calling panic() 2022-01-28 11:42 [PATCH 0/5] Update doc and fix some issues about kdump Tiezhu Yang ` (2 preceding siblings ...) 2022-01-28 11:42 ` [PATCH 3/5] kcsan: unset panic_on_warn before calling panic() Tiezhu Yang @ 2022-01-28 11:42 ` Tiezhu Yang 2022-01-28 11:52 ` Marco Elver 2022-01-28 11:42 ` [PATCH 5/5] kfence: " Tiezhu Yang 4 siblings, 1 reply; 10+ messages in thread From: Tiezhu Yang @ 2022-01-28 11:42 UTC (permalink / raw) To: Baoquan He, Jonathan Corbet, Andrew Morton, Peter Zijlstra, Marco Elver Cc: kexec, linux-doc, kasan-dev, linux-mm, linux-kernel As done in the full WARN() handler, panic_on_warn needs to be cleared before calling panic() to avoid recursive panics. Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn> --- kernel/sched/core.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 848eaa0..f5b0886 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -5524,8 +5524,17 @@ static noinline void __schedule_bug(struct task_struct *prev) pr_err("Preemption disabled at:"); print_ip_sym(KERN_ERR, preempt_disable_ip); } - if (panic_on_warn) + + if (panic_on_warn) { + /* + * This thread may hit another WARN() in the panic path. + * Resetting this prevents additional WARN() from panicking the + * system on this thread. Other threads are blocked by the + * panic_mutex in panic(). + */ + panic_on_warn = 0; panic("scheduling while atomic\n"); + } dump_stack(); add_taint(TAINT_WARN, LOCKDEP_STILL_OK); -- 2.1.0 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH 4/5] sched: unset panic_on_warn before calling panic() 2022-01-28 11:42 ` [PATCH 4/5] sched: " Tiezhu Yang @ 2022-01-28 11:52 ` Marco Elver 2022-01-30 0:29 ` Tiezhu Yang 0 siblings, 1 reply; 10+ messages in thread From: Marco Elver @ 2022-01-28 11:52 UTC (permalink / raw) To: Tiezhu Yang Cc: Baoquan He, Jonathan Corbet, Andrew Morton, Peter Zijlstra, kexec, linux-doc, kasan-dev, linux-mm, linux-kernel On Fri, 28 Jan 2022 at 12:42, Tiezhu Yang <yangtiezhu@loongson.cn> wrote: > > As done in the full WARN() handler, panic_on_warn needs to be cleared > before calling panic() to avoid recursive panics. > > Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn> > --- > kernel/sched/core.c | 11 ++++++++++- > 1 file changed, 10 insertions(+), 1 deletion(-) > > diff --git a/kernel/sched/core.c b/kernel/sched/core.c > index 848eaa0..f5b0886 100644 > --- a/kernel/sched/core.c > +++ b/kernel/sched/core.c > @@ -5524,8 +5524,17 @@ static noinline void __schedule_bug(struct task_struct *prev) > pr_err("Preemption disabled at:"); > print_ip_sym(KERN_ERR, preempt_disable_ip); > } > - if (panic_on_warn) > + > + if (panic_on_warn) { > + /* > + * This thread may hit another WARN() in the panic path. > + * Resetting this prevents additional WARN() from panicking the > + * system on this thread. Other threads are blocked by the > + * panic_mutex in panic(). > + */ > + panic_on_warn = 0; > panic("scheduling while atomic\n"); I agree this is worth fixing. But: Why can't the "panic_on_warn = 0" just be moved inside panic(), instead of copy-pasting this all over the place? I may be missing something obvious why this hasn't been done before... Thanks, -- Marco ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 4/5] sched: unset panic_on_warn before calling panic() 2022-01-28 11:52 ` Marco Elver @ 2022-01-30 0:29 ` Tiezhu Yang 0 siblings, 0 replies; 10+ messages in thread From: Tiezhu Yang @ 2022-01-30 0:29 UTC (permalink / raw) To: Marco Elver Cc: Baoquan He, Jonathan Corbet, Andrew Morton, Peter Zijlstra, kexec, linux-doc, kasan-dev, linux-mm, linux-kernel On 1/28/22 19:52, Marco Elver wrote: > On Fri, 28 Jan 2022 at 12:42, Tiezhu Yang <yangtiezhu@loongson.cn> wrote: >> >> As done in the full WARN() handler, panic_on_warn needs to be cleared >> before calling panic() to avoid recursive panics. >> >> Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn> >> --- >> kernel/sched/core.c | 11 ++++++++++- >> 1 file changed, 10 insertions(+), 1 deletion(-) >> >> diff --git a/kernel/sched/core.c b/kernel/sched/core.c >> index 848eaa0..f5b0886 100644 >> --- a/kernel/sched/core.c >> +++ b/kernel/sched/core.c >> @@ -5524,8 +5524,17 @@ static noinline void __schedule_bug(struct task_struct *prev) >> pr_err("Preemption disabled at:"); >> print_ip_sym(KERN_ERR, preempt_disable_ip); >> } >> - if (panic_on_warn) >> + >> + if (panic_on_warn) { >> + /* >> + * This thread may hit another WARN() in the panic path. >> + * Resetting this prevents additional WARN() from panicking the >> + * system on this thread. Other threads are blocked by the >> + * panic_mutex in panic(). >> + */ >> + panic_on_warn = 0; >> panic("scheduling while atomic\n"); > > I agree this is worth fixing. > > But: Why can't the "panic_on_warn = 0" just be moved inside panic(), > instead of copy-pasting this all over the place? OK, it looks better. Let me wait for some days, if no more comments, I will send v2 to move "panic_on_warn = 0" inside panic() and remove it from the other places, like this: diff --git a/kernel/panic.c b/kernel/panic.c index 55b50e052ec3..95ba825522dd 100644 --- a/kernel/panic.c +++ b/kernel/panic.c @@ -185,6 +185,16 @@ void panic(const char *fmt, ...) int old_cpu, this_cpu; bool _crash_kexec_post_notifiers = crash_kexec_post_notifiers; + if (panic_on_warn) { + /* + * This thread may hit another WARN() in the panic path. + * Resetting this prevents additional WARN() from panicking the + * system on this thread. Other threads are blocked by the + * panic_mutex in panic(). + */ + panic_on_warn = 0; + } + /* * Disable local interrupts. This will prevent panic_smp_self_stop * from deadlocking the first cpu that invokes the panic, since @@ -576,16 +586,8 @@ void __warn(const char *file, int line, void *caller, unsigned taint, if (regs) show_regs(regs); - if (panic_on_warn) { - /* - * This thread may hit another WARN() in the panic path. - * Resetting this prevents additional WARN() from panicking the - * system on this thread. Other threads are blocked by the - * panic_mutex in panic(). - */ - panic_on_warn = 0; + if (panic_on_warn) panic("panic_on_warn set ...\n"); - } if (!regs) dump_stack(); diff --git a/lib/ubsan.c b/lib/ubsan.c index bdc380ff5d5c..36bd75e33426 100644 --- a/lib/ubsan.c +++ b/lib/ubsan.c @@ -154,16 +154,8 @@ static void ubsan_epilogue(void) current->in_ubsan--; - if (panic_on_warn) { - /* - * This thread may hit another WARN() in the panic path. - * Resetting this prevents additional WARN() from panicking the - * system on this thread. Other threads are blocked by the - * panic_mutex in panic(). - */ - panic_on_warn = 0; + if (panic_on_warn) panic("panic_on_warn set ...\n"); - } } void __ubsan_handle_divrem_overflow(void *_data, void *lhs, void *rhs) diff --git a/mm/kasan/report.c b/mm/kasan/report.c index 3ad9624dcc56..f14146563d41 100644 --- a/mm/kasan/report.c +++ b/mm/kasan/report.c @@ -117,16 +117,8 @@ static void end_report(unsigned long *flags, unsigned long addr) pr_err("==================================================================\n"); add_taint(TAINT_BAD_PAGE, LOCKDEP_NOW_UNRELIABLE); spin_unlock_irqrestore(&report_lock, *flags); - if (panic_on_warn && !test_bit(KASAN_BIT_MULTI_SHOT, &kasan_flags)) { - /* - * This thread may hit another WARN() in the panic path. - * Resetting this prevents additional WARN() from panicking the - * system on this thread. Other threads are blocked by the - * panic_mutex in panic(). - */ - panic_on_warn = 0; + if (panic_on_warn && !test_bit(KASAN_BIT_MULTI_SHOT, &kasan_flags)) panic("panic_on_warn set ...\n"); - } if (kasan_arg_fault == KASAN_ARG_FAULT_PANIC) panic("kasan.fault=panic set ...\n"); kasan_enable_current(); Thanks, Tiezhu > > I may be missing something obvious why this hasn't been done before... > > Thanks, > -- Marco ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 5/5] kfence: unset panic_on_warn before calling panic() 2022-01-28 11:42 [PATCH 0/5] Update doc and fix some issues about kdump Tiezhu Yang ` (3 preceding siblings ...) 2022-01-28 11:42 ` [PATCH 4/5] sched: " Tiezhu Yang @ 2022-01-28 11:42 ` Tiezhu Yang 4 siblings, 0 replies; 10+ messages in thread From: Tiezhu Yang @ 2022-01-28 11:42 UTC (permalink / raw) To: Baoquan He, Jonathan Corbet, Andrew Morton, Peter Zijlstra, Marco Elver Cc: kexec, linux-doc, kasan-dev, linux-mm, linux-kernel As done in the full WARN() handler, panic_on_warn needs to be cleared before calling panic() to avoid recursive panics. Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn> --- mm/kfence/report.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/mm/kfence/report.c b/mm/kfence/report.c index f93a7b2..9d61a23 100644 --- a/mm/kfence/report.c +++ b/mm/kfence/report.c @@ -267,8 +267,16 @@ void kfence_report_error(unsigned long address, bool is_write, struct pt_regs *r lockdep_on(); - if (panic_on_warn) + if (panic_on_warn) { + /* + * This thread may hit another WARN() in the panic path. + * Resetting this prevents additional WARN() from panicking the + * system on this thread. Other threads are blocked by the + * panic_mutex in panic(). + */ + panic_on_warn = 0; panic("panic_on_warn set ...\n"); + } /* We encountered a memory safety error, taint the kernel! */ add_taint(TAINT_BAD_PAGE, LOCKDEP_STILL_OK); -- 2.1.0 ^ permalink raw reply related [flat|nested] 10+ messages in thread
end of thread, other threads:[~2022-01-30 2:46 UTC | newest] Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2022-01-28 11:42 [PATCH 0/5] Update doc and fix some issues about kdump Tiezhu Yang 2022-01-28 11:42 ` [PATCH 1/5] docs: kdump: update description about sysfs file system support Tiezhu Yang 2022-01-30 2:10 ` Baoquan He 2022-01-28 11:42 ` [PATCH 2/5] docs: kdump: add scp sample to write out the dump file Tiezhu Yang 2022-01-30 2:46 ` Baoquan He 2022-01-28 11:42 ` [PATCH 3/5] kcsan: unset panic_on_warn before calling panic() Tiezhu Yang 2022-01-28 11:42 ` [PATCH 4/5] sched: " Tiezhu Yang 2022-01-28 11:52 ` Marco Elver 2022-01-30 0:29 ` Tiezhu Yang 2022-01-28 11:42 ` [PATCH 5/5] kfence: " Tiezhu Yang
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).