aboutsummaryrefslogtreecommitdiffstats
path: root/module/spl/spl-err.c
diff options
context:
space:
mode:
Diffstat (limited to 'module/spl/spl-err.c')
-rw-r--r--module/spl/spl-err.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/module/spl/spl-err.c b/module/spl/spl-err.c
index cf9f096b1..2f66b6e23 100644
--- a/module/spl/spl-err.c
+++ b/module/spl/spl-err.c
@@ -29,6 +29,17 @@
#include <linux/ratelimit.h>
/*
+ * It is often useful to actually have the panic crash the node so you
+ * can then get notified of the event, get the crashdump for later
+ * analysis and other such goodies.
+ * But we would still default to the current default of not to do that.
+ */
+unsigned int spl_panic_halt;
+module_param(spl_panic_halt, uint, 0644);
+MODULE_PARM_DESC(spl_panic_halt,
+ "Cause kernel panic on assertion failures");
+
+/*
* Limit the number of stack traces dumped to not more than 5 every
* 60 seconds to prevent denial-of-service attacks from debug code.
*/
@@ -62,6 +73,9 @@ spl_panic(const char *file, const char *func, int line, const char *fmt, ...) {
printk(KERN_EMERG "%s", msg);
printk(KERN_EMERG "PANIC at %s:%d:%s()\n", newfile, line, func);
+ if (spl_panic_halt)
+ panic("%s", msg);
+
spl_dumpstack();
/* Halt the thread to facilitate further debugging */