From: Mathieu Poirier Date: Mon, 16 May 2016 22:55:55 +0000 (-0600) Subject: cs-etm: avoid casting variable X-Git-Tag: firefly_0821_release~176^2~4^2~41^2~3 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=c14318faac87ba59c2ec8279e6328c774af3b723;p=firefly-linux-kernel-4.4.55.git cs-etm: avoid casting variable 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 --- diff --git a/tools/perf/util/cs-etm.c b/tools/perf/util/cs-etm.c index 0e9a0d07f03a..1c7208840823 100644 --- a/tools/perf/util/cs-etm.c +++ b/tools/perf/util/cs-etm.c @@ -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;