* [PATCH 1/2] Make lib/bug.c WARN implementation match the kernel/panic.c one
@ 2010-06-26 19:10 Anton Blanchard
2010-06-26 19:13 ` [PATCH 2/2] Add oops end marker to lib/bug.c WARN implementation Anton Blanchard
2010-06-26 19:54 ` [PATCH 1/2] Make lib/bug.c WARN implementation match the kernel/panic.c one Kirill A. Shutemov
0 siblings, 2 replies; 3+ messages in thread
From: Anton Blanchard @ 2010-06-26 19:10 UTC (permalink / raw)
To: akpm, mingo, arjan; +Cc: linux-kernel
There are a few issues with the exception based WARN implementation in
lib/bug.c:
- Inconsistent printk flags. The "cut here" line is printed at KERN_EMERG, so
the console and all logged in users see the single line:
------------[ cut here ]------------
for each WARN. Fix this so we print everything at KERN_WARNING to match the
kernel/panic.c version.
- The lib/bug.c WARN would print "Badness at". Change it to match the
kernel/panic.c version which prints "WARNING: at".
- Print the list of modules, similar to kernel/panic.c of modules, similar to
kernel/panic.c
Signed-off-by: Anton Blanchard <anton@samba.org>
---
Index: linux-2.6/lib/bug.c
===================================================================
--- linux-2.6.orig/lib/bug.c 2010-06-26 06:09:59.000000000 +1000
+++ linux-2.6/lib/bug.c 2010-06-26 06:24:28.000000000 +1000
@@ -136,8 +136,6 @@ enum bug_trap_type report_bug(unsigned l
bug = find_bug(bugaddr);
- printk(KERN_EMERG "------------[ cut here ]------------\n");
-
file = NULL;
line = 0;
warning = 0;
@@ -156,19 +154,24 @@ enum bug_trap_type report_bug(unsigned l
if (warning) {
/* this is a WARN_ON rather than BUG/BUG_ON */
+ printk(KERN_WARNING "------------[ cut here ]------------\n");
+
if (file)
- printk(KERN_ERR "Badness at %s:%u\n",
+ printk(KERN_WARNING "WARNING: at %s:%u\n",
file, line);
else
- printk(KERN_ERR "Badness at %p "
+ printk(KERN_WARNING "WARNING: at %p "
"[verbose debug info unavailable]\n",
(void *)bugaddr);
+ print_modules();
show_regs(regs);
add_taint(BUG_GET_TAINT(bug));
return BUG_TRAP_TYPE_WARN;
}
+ printk(KERN_EMERG "------------[ cut here ]------------\n");
+
if (file)
printk(KERN_CRIT "kernel BUG at %s:%u!\n",
file, line);
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH 2/2] Add oops end marker to lib/bug.c WARN implementation
2010-06-26 19:10 [PATCH 1/2] Make lib/bug.c WARN implementation match the kernel/panic.c one Anton Blanchard
@ 2010-06-26 19:13 ` Anton Blanchard
2010-06-26 19:54 ` [PATCH 1/2] Make lib/bug.c WARN implementation match the kernel/panic.c one Kirill A. Shutemov
1 sibling, 0 replies; 3+ messages in thread
From: Anton Blanchard @ 2010-06-26 19:13 UTC (permalink / raw)
To: akpm, mingo, arjan; +Cc: linux-kernel
We are missing the oops end marker for the exception based WARN implementation
in lib/bug.c. This is useful for logfile analysis tools.
Signed-off-by: Anton Blanchard <anton@samba.org>
---
Index: linux-2.6/include/linux/kernel.h
===================================================================
--- linux-2.6.orig/include/linux/kernel.h 2010-06-26 06:29:35.000000000 +1000
+++ linux-2.6/include/linux/kernel.h 2010-06-26 06:30:27.000000000 +1000
@@ -177,6 +177,7 @@ NORET_TYPE void panic(const char * fmt,
__attribute__ ((NORET_AND format (printf, 1, 2))) __cold;
extern void oops_enter(void);
extern void oops_exit(void);
+void print_oops_end_marker(void);
extern int oops_may_print(void);
NORET_TYPE void do_exit(long error_code)
ATTRIB_NORET;
Index: linux-2.6/kernel/panic.c
===================================================================
--- linux-2.6.orig/kernel/panic.c 2010-06-26 06:29:35.000000000 +1000
+++ linux-2.6/kernel/panic.c 2010-06-26 06:30:05.000000000 +1000
@@ -344,7 +344,7 @@ static int init_oops_id(void)
}
late_initcall(init_oops_id);
-static void print_oops_end_marker(void)
+void print_oops_end_marker(void)
{
init_oops_id();
printk(KERN_WARNING "---[ end trace %016llx ]---\n",
Index: linux-2.6/lib/bug.c
===================================================================
--- linux-2.6.orig/lib/bug.c 2010-06-26 06:29:35.000000000 +1000
+++ linux-2.6/lib/bug.c 2010-06-26 06:31:28.000000000 +1000
@@ -166,6 +166,7 @@ enum bug_trap_type report_bug(unsigned l
print_modules();
show_regs(regs);
+ print_oops_end_marker();
add_taint(BUG_GET_TAINT(bug));
return BUG_TRAP_TYPE_WARN;
}
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH 1/2] Make lib/bug.c WARN implementation match the kernel/panic.c one
2010-06-26 19:10 [PATCH 1/2] Make lib/bug.c WARN implementation match the kernel/panic.c one Anton Blanchard
2010-06-26 19:13 ` [PATCH 2/2] Add oops end marker to lib/bug.c WARN implementation Anton Blanchard
@ 2010-06-26 19:54 ` Kirill A. Shutemov
1 sibling, 0 replies; 3+ messages in thread
From: Kirill A. Shutemov @ 2010-06-26 19:54 UTC (permalink / raw)
To: Anton Blanchard; +Cc: akpm, mingo, arjan, linux-kernel
On Sun, Jun 27, 2010 at 05:10:59AM +1000, Anton Blanchard wrote:
>
> There are a few issues with the exception based WARN implementation in
> lib/bug.c:
>
> - Inconsistent printk flags. The "cut here" line is printed at KERN_EMERG, so
> the console and all logged in users see the single line:
>
> ------------[ cut here ]------------
>
> for each WARN. Fix this so we print everything at KERN_WARNING to match the
> kernel/panic.c version.
>
> - The lib/bug.c WARN would print "Badness at". Change it to match the
> kernel/panic.c version which prints "WARNING: at".
>
> - Print the list of modules, similar to kernel/panic.c of modules, similar to
> kernel/panic.c
>
> Signed-off-by: Anton Blanchard <anton@samba.org>
> ---
>
> Index: linux-2.6/lib/bug.c
> ===================================================================
> --- linux-2.6.orig/lib/bug.c 2010-06-26 06:09:59.000000000 +1000
> +++ linux-2.6/lib/bug.c 2010-06-26 06:24:28.000000000 +1000
> @@ -136,8 +136,6 @@ enum bug_trap_type report_bug(unsigned l
>
> bug = find_bug(bugaddr);
>
> - printk(KERN_EMERG "------------[ cut here ]------------\n");
> -
> file = NULL;
> line = 0;
> warning = 0;
> @@ -156,19 +154,24 @@ enum bug_trap_type report_bug(unsigned l
>
> if (warning) {
> /* this is a WARN_ON rather than BUG/BUG_ON */
> + printk(KERN_WARNING "------------[ cut here ]------------\n");
> +
> if (file)
> - printk(KERN_ERR "Badness at %s:%u\n",
> + printk(KERN_WARNING "WARNING: at %s:%u\n",
> file, line);
> else
> - printk(KERN_ERR "Badness at %p "
> + printk(KERN_WARNING "WARNING: at %p "
> "[verbose debug info unavailable]\n",
> (void *)bugaddr);
>
> + print_modules();
> show_regs(regs);
> add_taint(BUG_GET_TAINT(bug));
> return BUG_TRAP_TYPE_WARN;
> }
>
> + printk(KERN_EMERG "------------[ cut here ]------------\n");
> +
Hm... Why do you use KERN_EMERG here?
> if (file)
> printk(KERN_CRIT "kernel BUG at %s:%u!\n",
> file, line);
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
--
Kirill A. Shutemov
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2010-06-26 20:04 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-06-26 19:10 [PATCH 1/2] Make lib/bug.c WARN implementation match the kernel/panic.c one Anton Blanchard
2010-06-26 19:13 ` [PATCH 2/2] Add oops end marker to lib/bug.c WARN implementation Anton Blanchard
2010-06-26 19:54 ` [PATCH 1/2] Make lib/bug.c WARN implementation match the kernel/panic.c one Kirill A. Shutemov
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.