cs-etm: avoid casting variable
authorMathieu Poirier <mathieu.poirier@linaro.org>
Mon, 16 May 2016 22:55:55 +0000 (16:55 -0600)
committerMathieu Poirier <mathieu.poirier@linaro.org>
Mon, 20 Jun 2016 17:16:07 +0000 (11:16 -0600)
Because of two's complement reprensentation, casting an int to
and unsigned value doesn't simply get rid of the negative sign.
As such a value of -1 becomes 0xFFFFFFFF, which is clearly not
the desired effect.

This patch deals with cases when @cpu has the value of -1.  In
those cases queue '0' is initially selected.

Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
tools/perf/util/cs-etm.c

index 0e9a0d07f03af5c7003783d078aab9334ee4c8e1..1c7208840823ca5134b4e0189f4aac42b3f75140 100644 (file)
@@ -938,10 +938,12 @@ static struct cs_etm_queue *cs_etm__cpu_to_etmq(struct cs_etm_auxtrace *etm,
 {
         unsigned q,j;
 
-        if (/*(cpu < 0) ||*/ (0 == etm->queues.nr_queues))
+        if (etm->queues.nr_queues == 0)
                 return NULL;
 
-        if ((unsigned) cpu >= etm->queues.nr_queues)
+       if (cpu < 0)
+               q = 0;
+        else if ((unsigned) cpu >= etm->queues.nr_queues)
                 q = etm->queues.nr_queues - 1;
         else 
                 q = cpu;