This is a note to let you know that I've just added the patch titled panic: Consolidate open-coded panic_on_warn checks to the 4.14-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: panic-consolidate-open-coded-panic_on_warn-checks.patch and it can be found in the queue-4.14 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let <stable@xxxxxxxxxxxxxxx> know about it. >From stable-owner@xxxxxxxxxxxxxxx Fri Feb 3 01:35:49 2023 From: Eric Biggers <ebiggers@xxxxxxxxxx> Date: Thu, 2 Feb 2023 16:33:50 -0800 Subject: panic: Consolidate open-coded panic_on_warn checks To: stable@xxxxxxxxxxxxxxx Cc: Harshit Mogalapalli <harshit.m.mogalapalli@xxxxxxxxxx>, Kees Cook <keescook@xxxxxxxxxxxx>, SeongJae Park <sj@xxxxxxxxxx>, Seth Jenkins <sethjenkins@xxxxxxxxxx>, Jann Horn <jannh@xxxxxxxxxx>, "Eric W . Biederman" <ebiederm@xxxxxxxxxxxx>, linux-hardening@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx, Marco Elver <elver@xxxxxxxxxx>, Dmitry Vyukov <dvyukov@xxxxxxxxxx>, Ingo Molnar <mingo@xxxxxxxxxx>, Peter Zijlstra <peterz@xxxxxxxxxxxxx>, Juri Lelli <juri.lelli@xxxxxxxxxx>, Vincent Guittot <vincent.guittot@xxxxxxxxxx>, Dietmar Eggemann <dietmar.eggemann@xxxxxxx>, Steven Rostedt <rostedt@xxxxxxxxxxx>, Ben Segall <bsegall@xxxxxxxxxx>, Mel Gorman <mgorman@xxxxxxx>, Daniel Bristot de Oliveira <bristot@xxxxxxxxxx>, Valentin Schneider <vschneid@xxxxxxxxxx>, Andrey Ryabinin <ryabinin.a.a@xxxxxxxxx>, Alexander Potapenko <glider@xxxxxxxxxx>, Andrey Konovalov <andreyknvl@xxxxxxxxx>, Vincenzo Frascino <vincenzo.frascino@xxxxxxx>, Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>, David Gow <dav idgow@go ogle.com>, tangmeng <tangmeng@xxxxxxxxxxxxx>, Shuah Khan <skhan@xxxxxxxxxxxxxxxxxxx>, Petr Mladek <pmladek@xxxxxxxx>, "Paul E. McKenney" <paulmck@xxxxxxxxxx>, Sebastian Andrzej Siewior <bigeasy@xxxxxxxxxxxxx>, "Guilherme G. Piccoli" <gpiccoli@xxxxxxxxxx>, Tiezhu Yang <yangtiezhu@xxxxxxxxxxx>, kasan-dev@xxxxxxxxxxxxxxxx, linux-mm@xxxxxxxxx, Luis Chamberlain <mcgrof@xxxxxxxxxx> Message-ID: <20230203003354.85691-12-ebiggers@xxxxxxxxxx> From: Kees Cook <keescook@xxxxxxxxxxxx> commit 79cc1ba7badf9e7a12af99695a557e9ce27ee967 upstream. Several run-time checkers (KASAN, UBSAN, KFENCE, KCSAN, sched) roll their own warnings, and each check "panic_on_warn". Consolidate this into a single function so that future instrumentation can be added in a single location. Cc: Marco Elver <elver@xxxxxxxxxx> Cc: Dmitry Vyukov <dvyukov@xxxxxxxxxx> Cc: Ingo Molnar <mingo@xxxxxxxxxx> Cc: Peter Zijlstra <peterz@xxxxxxxxxxxxx> Cc: Juri Lelli <juri.lelli@xxxxxxxxxx> Cc: Vincent Guittot <vincent.guittot@xxxxxxxxxx> Cc: Dietmar Eggemann <dietmar.eggemann@xxxxxxx> Cc: Steven Rostedt <rostedt@xxxxxxxxxxx> Cc: Ben Segall <bsegall@xxxxxxxxxx> Cc: Mel Gorman <mgorman@xxxxxxx> Cc: Daniel Bristot de Oliveira <bristot@xxxxxxxxxx> Cc: Valentin Schneider <vschneid@xxxxxxxxxx> Cc: Andrey Ryabinin <ryabinin.a.a@xxxxxxxxx> Cc: Alexander Potapenko <glider@xxxxxxxxxx> Cc: Andrey Konovalov <andreyknvl@xxxxxxxxx> Cc: Vincenzo Frascino <vincenzo.frascino@xxxxxxx> Cc: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> Cc: David Gow <davidgow@xxxxxxxxxx> Cc: tangmeng <tangmeng@xxxxxxxxxxxxx> Cc: Jann Horn <jannh@xxxxxxxxxx> Cc: Shuah Khan <skhan@xxxxxxxxxxxxxxxxxxx> Cc: Petr Mladek <pmladek@xxxxxxxx> Cc: "Paul E. McKenney" <paulmck@xxxxxxxxxx> Cc: Sebastian Andrzej Siewior <bigeasy@xxxxxxxxxxxxx> Cc: "Guilherme G. Piccoli" <gpiccoli@xxxxxxxxxx> Cc: Tiezhu Yang <yangtiezhu@xxxxxxxxxxx> Cc: kasan-dev@xxxxxxxxxxxxxxxx Cc: linux-mm@xxxxxxxxx Reviewed-by: Luis Chamberlain <mcgrof@xxxxxxxxxx> Signed-off-by: Kees Cook <keescook@xxxxxxxxxxxx> Reviewed-by: Marco Elver <elver@xxxxxxxxxx> Reviewed-by: Andrey Konovalov <andreyknvl@xxxxxxxxx> Link: https://lore.kernel.org/r/20221117234328.594699-4-keescook@xxxxxxxxxxxx Signed-off-by: Eric Biggers <ebiggers@xxxxxxxxxx> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- include/linux/kernel.h | 1 + kernel/panic.c | 9 +++++++-- kernel/sched/core.c | 3 +-- mm/kasan/report.c | 3 +-- 4 files changed, 10 insertions(+), 6 deletions(-) --- a/include/linux/kernel.h +++ b/include/linux/kernel.h @@ -293,6 +293,7 @@ extern long (*panic_blink)(int state); __printf(1, 2) void panic(const char *fmt, ...) __noreturn __cold; void nmi_panic(struct pt_regs *regs, const char *msg); +void check_panic_on_warn(const char *origin); extern void oops_enter(void); extern void oops_exit(void); void print_oops_end_marker(void); --- a/kernel/panic.c +++ b/kernel/panic.c @@ -122,6 +122,12 @@ void nmi_panic(struct pt_regs *regs, con } EXPORT_SYMBOL(nmi_panic); +void check_panic_on_warn(const char *origin) +{ + if (panic_on_warn) + panic("%s: panic_on_warn set ...\n", origin); +} + /** * panic - halt the system * @fmt: The text string to print @@ -546,8 +552,7 @@ void __warn(const char *file, int line, if (args) vprintk(args->fmt, args->args); - if (panic_on_warn) - panic("panic_on_warn set ...\n"); + check_panic_on_warn("kernel"); print_modules(); --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -3185,8 +3185,7 @@ static noinline void __schedule_bug(stru print_ip_sym(preempt_disable_ip); pr_cont("\n"); } - if (panic_on_warn) - panic("scheduling while atomic\n"); + check_panic_on_warn("scheduling while atomic"); dump_stack(); add_taint(TAINT_WARN, LOCKDEP_STILL_OK); --- a/mm/kasan/report.c +++ b/mm/kasan/report.c @@ -172,8 +172,7 @@ static void kasan_end_report(unsigned lo pr_err("==================================================================\n"); add_taint(TAINT_BAD_PAGE, LOCKDEP_NOW_UNRELIABLE); spin_unlock_irqrestore(&report_lock, *flags); - if (panic_on_warn) - panic("panic_on_warn set ...\n"); + check_panic_on_warn("KASAN"); kasan_enable_current(); } Patches currently in stable-queue which might be from stable-owner@xxxxxxxxxxxxxxx are queue-4.14/panic-unset-panic_on_warn-inside-panic.patch queue-4.14/objtool-add-a-missing-comma-to-avoid-string-concatenation.patch queue-4.14/hexagon-fix-function-name-in-die.patch queue-4.14/exit-add-and-use-make_task_dead.patch queue-4.14/h8300-fix-build-errors-from-do_exit-to-make_task_dead-transition.patch queue-4.14/panic-consolidate-open-coded-panic_on_warn-checks.patch queue-4.14/exit-put-an-upper-limit-on-how-often-we-can-oops.patch queue-4.14/panic-introduce-warn_limit.patch queue-4.14/exit-allow-oops_limit-to-be-disabled.patch queue-4.14/ia64-make-ia64_mca_recovery-bool-instead-of-tristate.patch queue-4.14/exit-use-read_once-for-all-oops-warn-limit-reads.patch queue-4.14/exit-expose-oops_count-to-sysfs.patch queue-4.14/panic-expose-warn_count-to-sysfs.patch queue-4.14/docs-fix-path-paste-o-for-sys-kernel-warn_count.patch queue-4.14/sysctl-add-a-new-register_sysctl_init-interface.patch