From 6fd22f19c494cba9c14db8c21309e12fd20c0bab Mon Sep 17 00:00:00 2001 From: Arjan van de Ven Date: Wed, 30 Jan 2008 13:32:50 +0100 Subject: [PATCH] --- yaml --- r: 80189 b: refs/heads/master c: 79b4cc5ee7a8086ac2c9c0afa52e6d687ce1ffef h: refs/heads/master i: 80187: 6f41f663d5dadd8e1579d5a0a6f40a53772d5ff2 v: v3 --- [refs] | 2 +- trunk/include/asm-generic/bug.h | 10 +++++----- trunk/kernel/panic.c | 15 +++++++++++++++ 3 files changed, 21 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index ca33fbb508d9..fc56fde43584 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 3a6a62f96f168d192fb0cc9c0b5ee2584740b32d +refs/heads/master: 79b4cc5ee7a8086ac2c9c0afa52e6d687ce1ffef diff --git a/trunk/include/asm-generic/bug.h b/trunk/include/asm-generic/bug.h index 1a0e1a7684bd..2632328d8646 100644 --- a/trunk/include/asm-generic/bug.h +++ b/trunk/include/asm-generic/bug.h @@ -32,11 +32,11 @@ struct bug_entry { #endif #ifndef __WARN -#define __WARN() do { \ - printk("WARNING: at %s:%d %s()\n", __FILE__, \ - __LINE__, __FUNCTION__); \ - dump_stack(); \ -} while (0) +#ifndef __ASSEMBLY__ +extern void warn_on_slowpath(const char *file, const int line); +#define WANT_WARN_ON_SLOWPATH +#endif +#define __WARN() warn_on_slowpath(__FILE__, __LINE__) #endif #ifndef WARN_ON diff --git a/trunk/kernel/panic.c b/trunk/kernel/panic.c index da4d6bac270e..0ebea438278a 100644 --- a/trunk/kernel/panic.c +++ b/trunk/kernel/panic.c @@ -20,6 +20,7 @@ #include #include #include +#include int panic_on_oops; int tainted; @@ -292,6 +293,20 @@ void oops_exit(void) (unsigned long long)oops_id); } +#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 "WARNING: at %s:%d %s()\n", file, + line, function); + dump_stack(); +} +EXPORT_SYMBOL(warn_on_slowpath); +#endif + #ifdef CONFIG_CC_STACKPROTECTOR /* * Called when gcc's -fstack-protector feature is used, and