diff options
Diffstat (limited to 'kernel/panic.c')
| -rw-r--r-- | kernel/panic.c | 32 | 
1 files changed, 12 insertions, 20 deletions
diff --git a/kernel/panic.c b/kernel/panic.c index 4d5088355bf..13f06349a78 100644 --- a/kernel/panic.c +++ b/kernel/panic.c @@ -21,6 +21,7 @@  #include <linux/debug_locks.h>  #include <linux/random.h>  #include <linux/kallsyms.h> +#include <linux/dmi.h>  int panic_on_oops;  static unsigned long tainted_mask; @@ -321,36 +322,27 @@ void oops_exit(void)  }  #ifdef WANT_WARN_ON_SLOWPATH -void warn_on_slowpath(const char *file, int line) -{ -	char function[KSYM_SYMBOL_LEN]; -	unsigned long caller = (unsigned long) __builtin_return_address(0); -	sprint_symbol(function, caller); - -	printk(KERN_WARNING "------------[ cut here ]------------\n"); -	printk(KERN_WARNING "WARNING: at %s:%d %s()\n", file, -		line, function); -	print_modules(); -	dump_stack(); -	print_oops_end_marker(); -	add_taint(TAINT_WARN); -} -EXPORT_SYMBOL(warn_on_slowpath); - -  void warn_slowpath(const char *file, int line, const char *fmt, ...)  {  	va_list args;  	char function[KSYM_SYMBOL_LEN];  	unsigned long caller = (unsigned long)__builtin_return_address(0); +	const char *board; +  	sprint_symbol(function, caller);  	printk(KERN_WARNING "------------[ cut here ]------------\n");  	printk(KERN_WARNING "WARNING: at %s:%d %s()\n", file,  		line, function); -	va_start(args, fmt); -	vprintk(fmt, args); -	va_end(args); +	board = dmi_get_system_info(DMI_PRODUCT_NAME); +	if (board) +		printk(KERN_WARNING "Hardware name: %s\n", board); + +	if (fmt) { +		va_start(args, fmt); +		vprintk(fmt, args); +		va_end(args); +	}  	print_modules();  	dump_stack();  |