1. 10 12月, 2015 9 次提交
  2. 08 12月, 2015 17 次提交
  3. 07 12月, 2015 5 次提交
    • W
      perf hists browser: Fix segfault if use symbol filter in cmdline · 4938cf0c
      Wang Nan 提交于
      If feed perf a symbol filter in cmdline and the result is empty,
      pressing 'Enter' in the hist browser causes crash:
      
       # ./perf report perf.data   <-- Common mistake for beginners
      
      Then press 'Enter':
      
       perf: Segmentation fault
       -------- backtrace --------
       /home/wangnan/perf[0x53e578]
       /lib64/libc.so.6(+0x3545f)[0x7f76bafe045f]
       /home/wangnan/perf[0x539dd4]
       /home/wangnan/perf(perf_evlist__tui_browse_hists+0x96)[0x53d216]
       /home/wangnan/perf(cmd_report+0x1b9f)[0x442c7f]
       /home/wangnan/perf[0x47efa2]
       /home/wangnan/perf(main+0x5f5)[0x432fa5]
       /lib64/libc.so.6(__libc_start_main+0xf4)[0x7f76bafccbd4]
       /home/wangnan/perf[0x4330d4]
      
      This is because 'perf.data' is interpreted as a symbol filter, and the
      result is empty, so selection is empty. However,
      hist_browser__toggle_fold() forgets to check it.
      
      This patch simply return false when selection is NULL.
      Signed-off-by: NWang Nan <wangnan0@huawei.com>
      Acked-by: NNamhyung Kim <namhyung@kernel.org>
      Tested-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Zefan Li <lizefan@huawei.com>
      Cc: pi3orama@163.com
      Link: http://lkml.kernel.org/r/1449455746-41952-2-git-send-email-wangnan0@huawei.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      4938cf0c
    • W
      perf hists browser: Reset selection when refresh · 979d2cac
      Wang Nan 提交于
      With the following steps:
      
       Step 1: perf report
      
       Step 2: Use UP/DOWN to select an entry, don't press 'ENTER'
      
       Step 3: Use '/' to filter symbols, use a filter which returns
               empty result
      
       Step 4: Press 'ENTER'
      
      We see that, even if we have filtered all the symbols (and the main
      interface is empty), pressing 'ENTER' still selects one symbol. This
      behavior surprises the user.
      
      This patch resets browser->{he_,}selection in hist_browser__refresh()
      and lets it choose default selection. In this case
      browser->{he_,}selection keeps NULL so user won't see annotation item in
      menu.
      Signed-off-by: NWang Nan <wangnan0@huawei.com>
      Acked-by: NNamhyung Kim <namhyung@kernel.org>
      Tested-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Zefan Li <lizefan@huawei.com>
      Cc: pi3orama@163.com
      Link: http://lkml.kernel.org/r/1449455746-41952-4-git-send-email-wangnan0@huawei.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      979d2cac
    • W
      perf hists browser: Add NULL pointer check to prevent crash · 837eeb75
      Wang Nan 提交于
      Before this patch we can trigger a segfault by following steps:
      
       Step 0: Use 'perf record' to generate a perf.data without callchain
      
       Step 1: perf report
      
       Step 2: Use UP/DOWN to select an entry, don't press 'ENTER'
      
       Step 3: Use '/' to filter symbols, use a filter which returns
               empty result
      
       Step 4: Press 'ENTER' (notice here that the old selection is still
      		        there. This is another problem)
      
       Step 5: Press 'ENTER' to annotate that symbol
      
       Step 6: Press 'LEFT' to go out.
      
       Result: segfault:
      
       perf: Segmentation fault
       -------- backtrace --------
       /home/wangnan/perf[0x53e568]
       /lib64/libc.so.6(+0x3545f)[0x7fba75d3245f]
       /home/wangnan/perf[0x537516]
       /home/wangnan/perf[0x533fef]
       /home/wangnan/perf[0x53b347]
       /home/wangnan/perf(perf_evlist__tui_browse_hists+0x96)[0x53d206]
       /home/wangnan/perf(cmd_report+0x1b9f)[0x442c7f]
       /home/wangnan/perf[0x47efa2]
       /home/wangnan/perf(main+0x5f5)[0x432fa5]
       /lib64/libc.so.6(__libc_start_main+0xf4)[0x7fba75d1ebd4]
       /home/wangnan/perf[0x4330d4]
      
      This is because in this case 'nd' could be NULL in
      ui_browser__hists_seek(), but that function never checks it.
      
      This patch adds checker for potential NULL pointer in that function.
      After this patch the above steps won't segfault.
      Signed-off-by: NWang Nan <wangnan0@huawei.com>
      Tested-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Zefan Li <lizefan@huawei.com>
      Cc: pi3orama@163.com
      Link: http://lkml.kernel.org/r/1449455746-41952-3-git-send-email-wangnan0@huawei.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      837eeb75
    • M
      perf buildid-list: Fix return value of perf buildid-list -k · c8319c9d
      Michael Petlan 提交于
      The buildid string length is returned by perf buildid-list -k command.
      Since a non-zero return value means an error, perf buildid-list -k cmd
      should return 0 when successful instead.
      
      Before:
      
      	# perf buildid-list -k
      	39356d74e96e02346fe0ec1f3f162b6c522bac62
      	# echo $?
      	41
      
      After:
      
      	# perf buildid-list -k
      	39356d74e96e02346fe0ec1f3f162b6c522bac62
      	# echo $?
      	0
      Signed-off-by: NMichael Petlan <mpetlan@redhat.com>
      Tested-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
      Fixes: 0b5a7935 ("perf buildid: Introduce sysfs/filename__sprintf_build_id")
      LPU-Reference: 1449080871.24573.145.camel@redhat.com
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      c8319c9d
    • M
      perf buildid-list: Show running kernel build id fix · 7375e151
      Michael Petlan 提交于
      The --kernel option of perf buildid-list tool should show the running
      kernel buildid.  The functionality has been lost during other changes of
      the related code.
      
      The build_id__sprintf() function should return length of the build-id
      string,  but it was the length of the build-id raw data instead. Due to
      that, some return value checking caused that the final string was not
      printed out.
      
      With this patch the build_id__sprintf() returns the correct value, so
      the --kernel option works again.
      
      Before:
      
      	# perf buildid-list --kernel
      	#
      
      After:
      
      	# perf buildid-list --kernel
      	972c1edab5bdc06cc224af45d510af662a3c6972
      	#
      Signed-off-by: NMichael Petlan <mpetlan@redhat.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
      LPU-Reference: 1448632089.24573.114.camel@redhat.com
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      7375e151
  4. 06 12月, 2015 9 次提交