]> git.karo-electronics.de Git - karo-tx-linux.git/commit
dynamic_debug: use a single printk() to emit messages
authorJason Baron <jbaron@redhat.com>
Wed, 5 Oct 2011 00:43:26 +0000 (11:43 +1100)
committerStephen Rothwell <sfr@canb.auug.org.au>
Fri, 7 Oct 2011 06:06:51 +0000 (17:06 +1100)
commit438f8826b59e80db3e7fd0c2ae19e2de5b4dda69
treeba57fa1ab060c3a1797f74a881e259dbb7992e1a
parenteee8dfdae85f925ffc486f1628040ade3a29be5f
dynamic_debug: use a single printk() to emit messages

We were using KERN_CONT to combine messages with their prefix.  However,
KERN_CONT is not smp safe, in the sense that it can interleave messages.
This interleaving can result in printks coming out at the wrong loglevel.
With the high frequency of printks that dynamic debug can produce this is
not desirable.

So make dynamic_emit_prefix() fill a char buf[64] instead of doing a
printk directly.  If we enable printing out of function, module, line, or
pid info, they are placed in this 64 byte buffer.  In my testing 64 bytes
was enough size to fulfill all requests.  Even if it's not, we can match
up the printk itself to see where it's from, so to me this is no big deal.

[akpm@linux-foundation.org: convert dangerous macro to C]
Signed-off-by: Jason Baron <jbaron@redhat.com>
Cc: Greg KH <greg@kroah.com>
Cc: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Andrew Morton <akpm@google.com>
lib/dynamic_debug.c