Skip to content

Commit

Permalink
Merge branch 'core/debug' into core/core
Browse files Browse the repository at this point in the history
  • Loading branch information
Ingo Molnar committed Dec 25, 2008
2 parents 0b271ef + ec5679e commit b594deb
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 24 deletions.
7 changes: 3 additions & 4 deletions include/asm-generic/bug.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,15 +33,14 @@ struct bug_entry {

#ifndef __WARN
#ifndef __ASSEMBLY__
extern void warn_on_slowpath(const char *file, const int line);
extern void warn_slowpath(const char *file, const int line,
const char *fmt, ...) __attribute__((format(printf, 3, 4)));
#define WANT_WARN_ON_SLOWPATH
#endif
#define __WARN() warn_on_slowpath(__FILE__, __LINE__)
#define __WARN_printf(arg...) warn_slowpath(__FILE__, __LINE__, arg)
#define __WARN() warn_slowpath(__FILE__, __LINE__, NULL)
#define __WARN_printf(arg...) warn_slowpath(__FILE__, __LINE__, arg)
#else
#define __WARN_printf(arg...) do { printk(arg); __WARN(); } while (0)
#define __WARN_printf(arg...) do { printk(arg); __WARN(); } while (0)
#endif

#ifndef WARN_ON
Expand Down
32 changes: 12 additions & 20 deletions kernel/panic.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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();
Expand Down

0 comments on commit b594deb

Please sign in to comment.