• Namhyung Kim's avatar
    perf mem: Fix a segfault with NULL event->name · c7a5592e
    Namhyung Kim authored
    Guilherme reported a crash in perf mem record.  It's because the
    perf_mem_event->name was NULL on his machine.  It should just return
    a NULL string when it has no format string in the name.
    
    The backtrace at the crash is below:
    
      Program received signal SIGSEGV, Segmentation fault.
      __strchrnul_avx2 () at ../sysdeps/x86_64/multiarch/strchr-avx2.S:67
      67              vmovdqu (%rdi), %ymm2
      (gdb) bt
      #0  __strchrnul_avx2 () at ../sysdeps/x86_64/multiarch/strchr-avx2.S:67
      #1  0x00007ffff6c982de in __find_specmb (format=0x0) at printf-parse.h:82
      #2  __printf_buffer (buf=buf@entry=0x7fffffffc760, format=format@entry=0x0, ap=ap@entry=0x7fffffffc880,
          mode_flags=mode_flags@entry=0) at vfprintf-internal.c:649
      #3  0x00007ffff6cb7840 in __vsnprintf_internal (string=<optimized out>, maxlen=<optimized out>, format=0x0,
          args=0x7fffffffc880, mode_flags=mode_flags@entry=0) at vsnprintf.c:96
      #4  0x00007ffff6cb787f in ___vsnprintf (string=<optimized out>, maxlen=<optimized out>, format=<optimized out>,
          args=<optimized out>) at vsnprintf.c:103
      #5  0x00005555557b9391 in scnprintf (buf=0x555555fe9320 <mem_loads_name> "", size=100, fmt=0x0)
          at ../lib/vsprintf.c:21
      #6  0x00005555557b74c3 in perf_pmu__mem_events_name (i=0, pmu=0x555556832180) at util/mem-events.c:106
      #7  0x00005555557b7ab9 in perf_mem_events__record_args (rec_argv=0x55555684c000, argv_nr=0x7fffffffca20)
          at util/mem-events.c:252
      #8  0x00005555555e370d in __cmd_record (argc=3, argv=0x7fffffffd760, mem=0x7fffffffcd80) at builtin-mem.c:156
      #9  0x00005555555e49c4 in cmd_mem (argc=4, argv=0x7fffffffd760) at builtin-mem.c:514
      #10 0x000055555569716c in run_builtin (p=0x555555fcde80 <commands+672>, argc=8, argv=0x7fffffffd760) at perf.c:349
      #11 0x0000555555697402 in handle_internal_command (argc=8, argv=0x7fffffffd760) at perf.c:402
      #12 0x0000555555697560 in run_argv (argcp=0x7fffffffd59c, argv=0x7fffffffd590) at perf.c:446
      #13 0x00005555556978a6 in main (argc=8, argv=0x7fffffffd760) at perf.c:562
    Reported-by: default avatarGuilherme Amadio <amadio@cern.ch>
    Reviewed-by: default avatarKan Liang <kan.liang@linux.intel.com>
    Closes: https://lore.kernel.org/linux-perf-users/Zlns_o_IE5L28168@cern.chSigned-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
    Link: https://lore.kernel.org/r/20240621170528.608772-5-namhyung@kernel.org
    c7a5592e
mem-events.c 16.2 KB