tracing: use recursive counter over irq level
authorSteven Rostedt <srostedt@redhat.com>
Mon, 20 Apr 2009 20:16:11 +0000 (16:16 -0400)
committerSteven Rostedt <rostedt@goodmis.org>
Mon, 20 Apr 2009 20:16:11 +0000 (16:16 -0400)
commitaa18efb2a2f07e1cf062039848e9d369bb358724
treee68169b1116a313a8db02e913443a2c2899f3bf2
parente395898e98119085f666febbc7b631dd69bc637f
tracing: use recursive counter over irq level

Althought using the irq level (hardirq_count, softirq_count and in_nmi)
was nice to detect bad recursion right away, but since the counters are
not atomically updated with respect to the interrupts, the function tracer
might trigger the test from an interrupt handler before the hardirq_count
is updated. This will trigger a false warning.

This patch converts the recursive detection to a simple counter.
If the depth is greater than 16 then the recursive detection will trigger.
16 is more than enough for any nested interrupts.

[ Impact: fix false positive trace recursion detection ]

Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
kernel/trace/ring_buffer.c