• Athira Rajeev's avatar
    perf affinity: Fix out of bound access to "sched_cpus" mask · 72cd652b
    Athira Rajeev authored
    The affinity code in "affinity_set" function access array named
    "sched_cpus". The size for this array is allocated in affinity_setup
    function which is nothing but value from get_cpu_set_size. This is used
    to contain the cpumask value for each cpu.
    
    While setting bit for each cpu, it calls "set_bit" function which access
    index in sched_cpus array.  If we provide a command-line option to -C
    which is more than the number of CPU's present in the system, the
    set_bit could access an array member which is out-of the array size.
    This is because currently, there is no boundary check for the CPU.  This
    will result in seg fault:
    
    <<>>
       ./perf stat -C 12323431 ls
      Perf can support 2048 CPUs. Consider raising MAX_NR_CPUS
      Segmentation fault (core dumped)
    <<>>
    
    Fix this by adding boundary check for the array.
    
    After the fix from powerpc system:
    
    <<>>
      ./perf stat -C 12323431 ls 1>out
      Perf can support 2048 CPUs. Consider raising MAX_NR_CPUS
    
       Performance counter stats for 'CPU(s) 12323431':
    
         <not supported> msec cpu-clock
         <not supported>      context-switches
         <not supported>      cpu-migrations
         <not supported>      page-faults
         <not supported>      cycles
         <not supported>      instructions
         <not supported>      branches
         <not supported>      branch-misses
    
             0.001192373 seconds time elapsed
    <<>>
    Reported-by: default avatarNageswara R Sastry <rnsastry@linux.ibm.com>
    Signed-off-by: default avatarAthira Jajeev <atrajeev@linux.vnet.ibm.com>
    Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    Tested-by: default avatarNageswara R Sastry <rnsastry@linux.ibm.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Kajol Jain <kjain@linux.ibm.com>
    Cc: Madhavan Srinivasan <maddy@linux.vnet.ibm.com>
    Cc: Michael Ellerman <mpe@ellerman.id.au>
    Cc: linuxppc-dev@lists.ozlabs.org
    Link: https://lore.kernel.org/r/20220905141929.7171-1-atrajeev@linux.vnet.ibm.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    72cd652b
affinity.c 2.02 KB