• A
    perf probe: Fix error propagation leading to segfault · fbee632d
    Arnaldo Carvalho de Melo 提交于
    There are two hunks in this patch that stops probe processing as soon as one
    error is found, breaking out of loops, the other fix an error propagation that
    should return a negative error number but instead was returning the result of
    "ret < 0", which is 1 and thus made several error checks fail because they test
    agains < 0.
    
    The problem could be triggered by asking for a variable that was optimized out,
    fact that should stop the whole probe processing but instead was segfaulting
    while installing broken probes:
    
    [root@emilia ~]# probe perf_mmap:55 user_lock_limit
    Failed to find the location of user_lock_limit at this address.
     Perhaps, it has been optimized out.
    Failed to find 'user_lock_limit' in this function.
    Add new events:
      probe:perf_mmap      (on perf_mmap:55 with user_lock_limit)
      probe:perf_mmap_1    (on perf_mmap:55 with user_lock_limit)
    Segmentation fault (core dumped)
    [root@emilia ~]# perf probe -l
      probe:perf_mmap      (on perf_mmap:55@git/linux/kernel/perf_event.c with user_lock_limit)
      probe:perf_mmap_1    (on perf_mmap:55@git/linux/kernel/perf_event.c with user_lock_limit)
    [root@emilia ~]#
    
    After the fix:
    
    [root@emilia ~]# probe perf_mmap:55 user_lock_limit
    Failed to find the location of user_lock_limit at this address.
     Perhaps, it has been optimized out.
    Failed to find 'user_lock_limit' in this function.
      Error: Failed to add events. (-2)
    [root@emilia ~]#
    
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Cc: Ingo Molnar <mingo@elte.hu>
    Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
    Cc: Mike Galbraith <efault@gmx.de>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Tom Zanussi <tzanussi@gmail.com>
    LKML-Reference: <new-submission>
    Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
    fbee632d
probe-finder.c 47.0 KB