diff options
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/panic.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/kernel/panic.c b/kernel/panic.c index da4d6bac270e..0ebea438278a 100644 --- a/kernel/panic.c +++ b/kernel/panic.c | |||
@@ -20,6 +20,7 @@ | |||
20 | #include <linux/kexec.h> | 20 | #include <linux/kexec.h> |
21 | #include <linux/debug_locks.h> | 21 | #include <linux/debug_locks.h> |
22 | #include <linux/random.h> | 22 | #include <linux/random.h> |
23 | #include <linux/kallsyms.h> | ||
23 | 24 | ||
24 | int panic_on_oops; | 25 | int panic_on_oops; |
25 | int tainted; | 26 | int tainted; |
@@ -292,6 +293,20 @@ void oops_exit(void) | |||
292 | (unsigned long long)oops_id); | 293 | (unsigned long long)oops_id); |
293 | } | 294 | } |
294 | 295 | ||
296 | #ifdef WANT_WARN_ON_SLOWPATH | ||
297 | void warn_on_slowpath(const char *file, int line) | ||
298 | { | ||
299 | char function[KSYM_SYMBOL_LEN]; | ||
300 | unsigned long caller = (unsigned long) __builtin_return_address(0); | ||
301 | |||
302 | sprint_symbol(function, caller); | ||
303 | printk(KERN_WARNING "WARNING: at %s:%d %s()\n", file, | ||
304 | line, function); | ||
305 | dump_stack(); | ||
306 | } | ||
307 | EXPORT_SYMBOL(warn_on_slowpath); | ||
308 | #endif | ||
309 | |||
295 | #ifdef CONFIG_CC_STACKPROTECTOR | 310 | #ifdef CONFIG_CC_STACKPROTECTOR |
296 | /* | 311 | /* |
297 | * Called when gcc's -fstack-protector feature is used, and | 312 | * Called when gcc's -fstack-protector feature is used, and |