• Beau Belgrave's avatar
    tracing/user_events: Fix struct arg size match check · d0a3022f
    Beau Belgrave authored
    When users register an event the name of the event and it's argument are
    checked to ensure they match if the event already exists. Normally all
    arguments are in the form of "type name", except for when the type
    starts with "struct ". In those cases, the size of the struct is passed
    in addition to the name, IE: "struct my_struct a 20" for an argument
    that is of type "struct my_struct" with a field name of "a" and has the
    size of 20 bytes.
    
    The current code does not honor the above case properly when comparing
    a match. This causes the event register to fail even when the same
    string was used for events that contain a struct argument within them.
    The example above "struct my_struct a 20" generates a match string of
    "struct my_struct a" omitting the size field.
    
    Add the struct size of the existing field when generating a comparison
    string for a struct field to ensure proper match checking.
    
    Link: https://lkml.kernel.org/r/20230629235049.581-2-beaub@linux.microsoft.com
    
    Cc: stable@vger.kernel.org
    Fixes: e6f89a14 ("tracing/user_events: Ensure user provided strings are safely formatted")
    Signed-off-by: default avatarBeau Belgrave <beaub@linux.microsoft.com>
    Signed-off-by: default avatarSteven Rostedt (Google) <rostedt@goodmis.org>
    d0a3022f
trace_events_user.c 62.5 KB