• Ian Rogers's avatar
    perf tests: Avoid raising SEGV using an obvious NULL dereference · e3e2cf3d
    Ian Rogers authored
    An optimized build such as:
    
      make -C tools/perf CLANG=1 CC=clang EXTRA_CFLAGS="-O3
    
    will turn the dereference operation into a ud2 instruction, raising a
    SIGILL rather than a SIGSEGV. Use raise(..) for correctness and clarity.
    
    Similar issues were addressed in Numfor Mbiziwo-Tiapo's patch:
    
      https://lkml.org/lkml/2019/7/8/1234
    
    Committer testing:
    
    Before:
    
      [root@quaco ~]# perf test hooks
      55: perf hooks                                            : Ok
      [root@quaco ~]# perf test -v hooks
      55: perf hooks                                            :
      --- start ---
      test child forked, pid 17092
      SIGSEGV is observed as expected, try to recover.
      Fatal error (SEGFAULT) in perf hook 'test'
      test child finished with 0
      ---- end ----
      perf hooks: Ok
      [root@quaco ~]#
    
    After:
    
      [root@quaco ~]# perf test hooks
      55: perf hooks                                            : Ok
      [root@quaco ~]# perf test -v hooks
      55: perf hooks                                            :
      --- start ---
      test child forked, pid 17909
      SIGSEGV is observed as expected, try to recover.
      Fatal error (SEGFAULT) in perf hook 'test'
      test child finished with 0
      ---- end ----
      perf hooks: Ok
      [root@quaco ~]#
    
    Fixes: a074865e ("perf tools: Introduce perf hooks")
    Signed-off-by: default avatarIan Rogers <irogers@google.com>
    Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Wang Nan <wangnan0@huawei.com>
    Link: http://lore.kernel.org/lkml/20190925195924.152834-2-irogers@google.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    e3e2cf3d
perf-hooks.c 988 Bytes