[PATCH] init: Do not warn on non-zero initcall return

From: Steven Rostedt
Date: Wed May 01 2013 - 11:02:39 EST


Commit f91eb62f71 "init: scream bloody murder if interrupts are enabled
too early" added three new warnings. The first two seemed reasonable,
but the third included a warning when an initcall returned non-zero.
Although, the third WARN() does include an imbalanced preempt disabled,
or irqs disable, it shouldn't warn if it only had an initcall that just
returns non-zero.

Link: http://lkml.kernel.org/r/20130501134814.GA5001@xxxxxxxxxxxxxxxxxxx

Reported-by: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
Signed-off-by: Steven Rostedt <rostedt@xxxxxxxxxxx>

diff --git a/init/main.c b/init/main.c
index bea1287..f0106bf 100644
--- a/init/main.c
+++ b/init/main.c
@@ -678,6 +678,7 @@ int __init_or_module do_one_initcall(initcall_t fn)
{
int count = preempt_count();
int ret;
+ bool warn = false;

if (initcall_debug)
ret = do_one_initcall_debug(fn);
@@ -692,12 +693,17 @@ int __init_or_module do_one_initcall(initcall_t fn)
if (preempt_count() != count) {
strlcat(msgbuf, "preemption imbalance ", sizeof(msgbuf));
preempt_count() = count;
+ warn = true;
}
if (irqs_disabled()) {
strlcat(msgbuf, "disabled interrupts ", sizeof(msgbuf));
local_irq_enable();
+ warn = true;
+ }
+ if (msgbuf[0]) {
+ pr_err("initcall %pF returned with %s\n", fn, msgbuf);
+ WARN_ON(warn);
}
- WARN(msgbuf[0], "initcall %pF returned with %s\n", fn, msgbuf);

return ret;
}


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/