Re: [PATCH] perf s390: Fix bug when creating per-thread event

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Dears,

Sorry, please ignore this mail.

On 12/09/2017 6:24 PM, Pu Hou wrote:
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 c311c797998c1e70eade463dd60b843da4f1a203
     Author: Alexey Dobriyan <adobriyan@xxxxxxxxx>
     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: c311c797998c ("cpumask: make "nr_cpumask_bits" unsigned")
Cc: <stable@xxxxxxxxxxxxxxx> # v4.12+
Cc: Alexey Dobriyan <adobriyan@xxxxxxxxx>
Acked-by: Heiko Carstens <heiko.carstens@xxxxxxxxxx>
Signed-off-by: Pu Hou <bjhoupu@xxxxxxxxxxxxxxxxxx>
---
  arch/s390/kernel/perf_cpum_sf.c | 5 +++--
  1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/arch/s390/kernel/perf_cpum_sf.c b/arch/s390/kernel/perf_cpum_sf.c
index c1bf75f..69be2c6 100644
--- a/arch/s390/kernel/perf_cpum_sf.c
+++ b/arch/s390/kernel/perf_cpum_sf.c
@@ -823,8 +823,9 @@ static int cpumsf_pmu_event_init(struct perf_event *event)
  	}

  	/* Check online status of the CPU to which the event is pinned */
-	if ((unsigned int)event->cpu >= nr_cpumask_bits ||
-	    (event->cpu >= 0 && !cpu_online(event->cpu)))
+	if (event->cpu >= 0 &&
+	    ((unsigned int)event->cpu >= nr_cpumask_bits ||
+	     !cpu_online(event->cpu)))
  		return -ENODEV;

  	/* Force reset of idle/hv excludes regardless of what the





[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]