From: Steven Rostedt <rostedt@kernel.org>
To: linux-kernel@vger.kernel.org
Cc: Masami Hiramatsu <mhiramat@kernel.org>,
Mark Rutland <mark.rutland@arm.com>,
Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
Andrew Morton <akpm@linux-foundation.org>,
Nam Cao <namcao@linutronix.de>, Petr Mladek <pmladek@suse.com>
Subject: [for-next][PATCH 03/12] panic: Add vpanic()
Date: Wed, 09 Jul 2025 20:31:59 -0400 [thread overview]
Message-ID: <20250710003235.868462961@kernel.org> (raw)
In-Reply-To: 20250710003156.209859354@kernel.org
From: Nam Cao <namcao@linutronix.de>
vpanic() is useful for implementing runtime verification reactors. Add it.
Signed-off-by: Nam Cao <namcao@linutronix.de>
Reviewed-by: Petr Mladek <pmladek@suse.com>
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
---
include/linux/panic.h | 3 +++
kernel/panic.c | 16 ++++++++++++----
2 files changed, 15 insertions(+), 4 deletions(-)
diff --git a/include/linux/panic.h b/include/linux/panic.h
index 4adc65766935..0332c6d6771f 100644
--- a/include/linux/panic.h
+++ b/include/linux/panic.h
@@ -3,6 +3,7 @@
#define _LINUX_PANIC_H
#include <linux/compiler_attributes.h>
+#include <linux/stdarg.h>
#include <linux/types.h>
struct pt_regs;
@@ -10,6 +11,8 @@ struct pt_regs;
extern long (*panic_blink)(int state);
__printf(1, 2)
void panic(const char *fmt, ...) __noreturn __cold;
+__printf(1, 0)
+void vpanic(const char *fmt, va_list args) __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);
diff --git a/kernel/panic.c b/kernel/panic.c
index b0b9a8bf4560..6a1823c383d0 100644
--- a/kernel/panic.c
+++ b/kernel/panic.c
@@ -309,13 +309,13 @@ static void panic_other_cpus_shutdown(bool crash_kexec)
/**
* panic - halt the system
* @fmt: The text string to print
+ * @args: Arguments for the format string
*
* Display a message, then perform cleanups. This function never returns.
*/
-void panic(const char *fmt, ...)
+void vpanic(const char *fmt, va_list args)
{
static char buf[1024];
- va_list args;
long i, i_next = 0, len;
int state = 0;
int old_cpu, this_cpu;
@@ -366,9 +366,7 @@ void panic(const char *fmt, ...)
console_verbose();
bust_spinlocks(1);
- va_start(args, fmt);
len = vscnprintf(buf, sizeof(buf), fmt, args);
- va_end(args);
if (len && buf[len - 1] == '\n')
buf[len - 1] = '\0';
@@ -505,7 +503,17 @@ void panic(const char *fmt, ...)
mdelay(PANIC_TIMER_STEP);
}
}
+EXPORT_SYMBOL(vpanic);
+/* Identical to vpanic(), except it takes variadic arguments instead of va_list */
+void panic(const char *fmt, ...)
+{
+ va_list args;
+
+ va_start(args, fmt);
+ vpanic(fmt, args);
+ va_end(args);
+}
EXPORT_SYMBOL(panic);
#define TAINT_FLAG(taint, _c_true, _c_false, _module) \
--
2.47.2
next prev parent reply other threads:[~2025-07-10 0:32 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-07-10 0:31 [for-next][PATCH 00/12] tracing: rv: Updates for v6.17 Steven Rostedt
2025-07-10 0:31 ` [for-next][PATCH 01/12] rv: Add #undef TRACE_INCLUDE_FILE Steven Rostedt
2025-07-10 0:31 ` [for-next][PATCH 02/12] printk: Make vprintk_deferred() public Steven Rostedt
2025-07-10 0:31 ` Steven Rostedt [this message]
2025-07-10 0:32 ` [for-next][PATCH 04/12] rv: Let the reactors take care of buffers Steven Rostedt
2025-07-10 0:32 ` [for-next][PATCH 05/12] rv: rename CONFIG_DA_MON_EVENTS to CONFIG_RV_MON_EVENTS Steven Rostedt
2025-07-10 0:32 ` [for-next][PATCH 06/12] rv: Add support for LTL monitors Steven Rostedt
2025-07-10 0:32 ` [for-next][PATCH 07/12] rv: Add rtapp container monitor Steven Rostedt
2025-07-10 0:32 ` [for-next][PATCH 08/12] riscv: mm: Add page fault trace points Steven Rostedt
2025-07-10 0:32 ` [for-next][PATCH 09/12] rv: Add rtapp_pagefault monitor Steven Rostedt
2025-07-10 0:32 ` [for-next][PATCH 10/12] rv: Add rtapp_sleep monitor Steven Rostedt
2025-07-10 0:32 ` [for-next][PATCH 11/12] rv: Add documentation for rtapp monitor Steven Rostedt
2025-07-10 0:32 ` [for-next][PATCH 12/12] rv: Allow to configure the number of per-task monitor Steven Rostedt
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=20250710003235.868462961@kernel.org \
--to=rostedt@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=mathieu.desnoyers@efficios.com \
--cc=mhiramat@kernel.org \
--cc=namcao@linutronix.de \
--cc=pmladek@suse.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.