• Jan Stancek's avatar
    perf header: Make build_cpu_topology skip offline/absent CPUs · 43db2843
    Jan Stancek authored
    When build_cpu_topo() encounters offline/absent CPUs, it fails to find any
    sysfs entries and returns failure.
    
    This leads to build_cpu_topology() and write_cpu_topology() failing as
    well.
    
    Because HEADER_CPU_TOPOLOGY has not been written, read leaves cpu_topology_map
    NULL and we get NULL ptr deref at:
    
      ...
       cmd_test
        __cmd_test
         test_and_print
          run_test
           test_session_topology
            check_cpu_topology
    
      36: Session topology                           :
      --- start ---
      test child forked, pid 14902
      templ file: /tmp/perf-test-4CKocW
      failed to write feature HEADER_CPU_TOPOLOGY
      perf: Segmentation fault
      Obtained 9 stack frames.
      ./perf(sighandler_dump_stack+0x41) [0x5095f1]
      /lib64/libc.so.6(+0x35250) [0x7f4b7c3c9250]
      ./perf(test_session_topology+0x1db) [0x490ceb]
      ./perf() [0x475b68]
      ./perf(cmd_test+0x5b9) [0x4763c9]
      ./perf() [0x4945a3]
      ./perf(main+0x69f) [0x427e8f]
      /lib64/libc.so.6(__libc_start_main+0xf5) [0x7f4b7c3b5b35]
      ./perf() [0x427fb9]
      test child interrupted
      ---- end ----
      Session topology: FAILED!
    
    This patch makes build_cpu_topology() skip offline/absent CPUs, by checking
    their presence against cpu_map built from online CPUs.
    Signed-off-by: default avatarJan Stancek <jstancek@redhat.com>
    Acked-by: default avatarJiri Olsa <jolsa@kernel.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: http://lkml.kernel.org/r/a271b770175524f4961d4903af33798358a4a518.1487146877.git.jstancek@redhat.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    43db2843
header.c 72.1 KB