• Steven Rostedt (Google)'s avatar
    tracing/histograms: Allow variables to have some modifiers · e30fbc61
    Steven Rostedt (Google) authored
    Modifiers are used to change the behavior of keys. For instance, they
    can grouped into buckets, converted to syscall names (from the syscall
    identifier), show task->comm of the current pid, be an array of longs
    that represent a stacktrace, and more.
    
    It was found that nothing stopped a value from taking a modifier. As
    values are simple counters. If this happened, it would call code that
    was not expecting a modifier and crash the kernel. This was fixed by
    having the ___create_val_field() function test if a modifier was present
    and fail if one was. This fixed the crash.
    
    Now there's a problem with variables. Variables are used to pass fields
    from one event to another. Variables are allowed to have some modifiers,
    as the processing may need to happen at the time of the event (like
    stacktraces and comm names of the current pid). The issue is that it too
    uses __create_val_field(). Now that fails on modifiers, variables can no
    longer use them (this is a regression).
    
    As not all modifiers are for variables, have them use a separate check.
    
    Link: https://lore.kernel.org/linux-trace-kernel/20230523221108.064a5d82@rorschach.local.home
    
    Cc: stable@vger.kernel.org
    Cc: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Tom Zanussi <zanussi@kernel.org>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Fixes: e0213434 ("tracing: Do not let histogram values have some modifiers")
    Signed-off-by: default avatarSteven Rostedt (Google) <rostedt@goodmis.org>
    e30fbc61
trace_events_hist.c 168 KB