BUG and WARN kernel log levels

From: Kees Cook
Date: Mon Aug 15 2016 - 14:53:31 EST


Hi,

So, I noticed that asm-gemeric/bug.h defines BUG() without a log level:

#ifndef HAVE_ARCH_BUG
#define BUG() do { \
printk("BUG: failure at %s:%d/%s()!\n", __FILE__, __LINE__, __func__); \

Seems like it should have one?

Also, I think we might want to examine WARN() a bit... it doesn't have
a log level either, but only a fraction of callers set one:

$ git grep -E 'WARN(_TAINT|)(_RATELIMIT|_ONCE|)\([^\)]' | grep -v KERN_ | wc -l
2735

$ git grep -E 'WARN(_TAINT|)(_RATELIMIT|_ONCE|)\([^\)]' | grep KERN_ | wc -l
77

If I'm reading checkpatch.pl correctly, it doesn't warn about missing
log levels on WARN calls, but I think it should.

How do you think is best to clean this up?

Mainly, I'd like to add a format string to BUG, or introduce a new
BUGish call that takes a format...

-Kees

--
Kees Cook
Nexus Security