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 <mathieu.poirier@linaro.org>
This commit is contained in:
Mathieu Poirier 2016-05-16 16:55:55 -06:00
parent 0951a97ed9
commit c14318faac

View 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;