mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-08-15 15:09:17 +00:00

Each RV monitor has one static buffer to send to the reactors. If multiple errors are detected simultaneously, the one buffer could be overwritten. Instead, leave it to the reactors to handle buffering. Reviewed-by: Gabriele Monaco <gmonaco@redhat.com> Signed-off-by: Nam Cao <namcao@linutronix.de> Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
47 lines
1.0 KiB
C
47 lines
1.0 KiB
C
// SPDX-License-Identifier: GPL-2.0
|
|
/*
|
|
* Copyright (C) 2019-2022 Red Hat, Inc. Daniel Bristot de Oliveira <bristot@kernel.org>
|
|
*
|
|
* Panic RV reactor:
|
|
* Prints the exception msg to the kernel message log and panic().
|
|
*/
|
|
|
|
#include <linux/ftrace.h>
|
|
#include <linux/tracepoint.h>
|
|
#include <linux/kernel.h>
|
|
#include <linux/module.h>
|
|
#include <linux/init.h>
|
|
#include <linux/rv.h>
|
|
|
|
__printf(1, 2) static void rv_panic_reaction(const char *msg, ...)
|
|
{
|
|
va_list args;
|
|
|
|
va_start(args, msg);
|
|
vpanic(msg, args);
|
|
va_end(args);
|
|
}
|
|
|
|
static struct rv_reactor rv_panic = {
|
|
.name = "panic",
|
|
.description = "panic the system if an exception is found.",
|
|
.react = rv_panic_reaction
|
|
};
|
|
|
|
static int __init register_react_panic(void)
|
|
{
|
|
rv_register_reactor(&rv_panic);
|
|
return 0;
|
|
}
|
|
|
|
static void __exit unregister_react_panic(void)
|
|
{
|
|
rv_unregister_reactor(&rv_panic);
|
|
}
|
|
|
|
module_init(register_react_panic);
|
|
module_exit(unregister_react_panic);
|
|
|
|
MODULE_AUTHOR("Daniel Bristot de Oliveira");
|
|
MODULE_DESCRIPTION("panic rv reactor: panic if an exception is found.");
|