• P
    s390/perf: fix bug when creating per-thread event · fc3100d6
    Pu Hou 提交于
    A per-thread event could not be created correctly like below:
    
        perf record --per-thread -e rB0000 -- sleep 1
        Error:
        The sys_perf_event_open() syscall returned with 19 (No such device) for event (rB0000).
        /bin/dmesg may provide additional information.
        No CONFIG_PERF_EVENTS=y kernel support configured?
    
    This bug was introduced by:
    
        commit c311c797
        Author: Alexey Dobriyan <adobriyan@gmail.com>
        Date:   Mon May 8 15:56:15 2017 -0700
    
        cpumask: make "nr_cpumask_bits" unsigned
    
    If a per-thread event is not attached to any CPU, the cpu field
    in struct perf_event is -1. The above commit converts the CPU number
    to unsigned int, which result in an illegal CPU number.
    
    Fixes: c311c797 ("cpumask: make "nr_cpumask_bits" unsigned")
    Cc: <stable@vger.kernel.org> # v4.12+
    Cc: Alexey Dobriyan <adobriyan@gmail.com>
    Acked-by: NHeiko Carstens <heiko.carstens@de.ibm.com>
    Signed-off-by: NPu Hou <bjhoupu@linux.vnet.ibm.com>
    Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
    fc3100d6
perf_cpum_sf.c 46.0 KB