• Kees Cook's avatar
    tracing/perf: Avoid -Warray-bounds warning for __rel_loc macro · c6d777ac
    Kees Cook authored
    As done for trace_events.h, also fix the __rel_loc macro in perf.h,
    which silences the -Warray-bounds warning:
    
    In file included from ./include/linux/string.h:253,
                     from ./include/linux/bitmap.h:11,
                     from ./include/linux/cpumask.h:12,
                     from ./include/linux/mm_types_task.h:14,
                     from ./include/linux/mm_types.h:5,
                     from ./include/linux/buildid.h:5,
                     from ./include/linux/module.h:14,
                     from samples/trace_events/trace-events-sample.c:2:
    In function '__fortify_strcpy',
        inlined from 'perf_trace_foo_rel_loc' at samples/trace_events/./trace-events-sample.h:519:1:
    ./include/linux/fortify-string.h:47:33: warning: '__builtin_strcpy' offset 12 is out of the bounds [
    0, 4] [-Warray-bounds]
       47 | #define __underlying_strcpy     __builtin_strcpy
          |                                 ^
    ./include/linux/fortify-string.h:445:24: note: in expansion of macro '__underlying_strcpy'
      445 |                 return __underlying_strcpy(p, q);
          |                        ^~~~~~~~~~~~~~~~~~~
    
    Also make __data struct member a proper flexible array to avoid future
    problems.
    
    Link: https://lkml.kernel.org/r/20220125220037.2738923-1-keescook@chromium.org
    
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: Masami Hiramatsu <mhiramat@kernel.org>
    Fixes: 55de2c0b ("tracing: Add '__rel_loc' using trace event macros")
    Reported-by: default avatarStephen Rothwell <sfr@canb.auug.org.au>
    Signed-off-by: default avatarKees Cook <keescook@chromium.org>
    Signed-off-by: default avatarSteven Rostedt (Google) <rostedt@goodmis.org>
    c6d777ac
perf.h 3.12 KB