• Frederic Weisbecker's avatar
    tracing/function-graph-tracer: fix functions call traces imbalance · 16185369
    Frederic Weisbecker authored
    Impact: fix traces output
    
    Sometimes one can observe an imbalance in the traces between function
    calls and function return traces:
    
    func1() {
        }
    }
    
    The curly brace inside func1() is the return of another function nested
    inside func1. The return trace have been inserted in the buffer but not
    the entry.
    We are storing a return address on the function traces stack while we
    haven't inserted its entry on the buffer, hence the imbalance on the
    traces.
    
    This is because the tracers doesn't check all failures that can happen
    on buffer insertion.
    
    This patch reports the tracing recursion failures and the ring buffer
    failures. In such cases, we now restore the original return address for
    the function, giving up its return trace.
    Signed-off-by: default avatarFrederic Weisbecker <fweisbec@gmail.com>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    LKML-Reference: <1237843021-11695-1-git-send-email-fweisbec@gmail.com>
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    16185369
trace.c 94.5 KB