• Sven Schnelle's avatar
    tracing/synthetic: Skip first entry for stack traces · 887f92e0
    Sven Schnelle authored
    While debugging another issue I noticed that the stack trace output
    contains the number of entries on top:
    
             <idle>-0       [000] d..4.   203.322502: wake_lat: pid=0 delta=2268270616 stack=STACK:
    => 0x10
    => __schedule+0xac6/0x1a98
    => schedule+0x126/0x2c0
    => schedule_timeout+0x242/0x2c0
    => __wait_for_common+0x434/0x680
    => __wait_rcu_gp+0x198/0x3e0
    => synchronize_rcu+0x112/0x138
    => ring_buffer_reset_online_cpus+0x140/0x2e0
    => tracing_reset_online_cpus+0x15c/0x1d0
    => tracing_set_clock+0x180/0x1d8
    => hist_register_trigger+0x486/0x670
    => event_hist_trigger_parse+0x494/0x1318
    => trigger_process_regex+0x1d4/0x258
    => event_trigger_write+0xb4/0x170
    => vfs_write+0x210/0xad0
    => ksys_write+0x122/0x208
    
    Fix this by skipping the first element. Also replace the pointer
    logic with an index variable which is easier to read.
    
    Link: https://lkml.kernel.org/r/20230816154928.4171614-3-svens@linux.ibm.com
    
    Cc: Masami Hiramatsu <mhiramat@kernel.org>
    Fixes: 00cf3d67 ("tracing: Allow synthetic events to pass around stacktraces")
    Signed-off-by: default avatarSven Schnelle <svens@linux.ibm.com>
    Signed-off-by: default avatarSteven Rostedt (Google) <rostedt@goodmis.org>
    887f92e0
trace_events_synth.c 55.8 KB