perf/x86: Make struct p4_event_bind::cntr signed array
authorAlexey Dobriyan <adobriyan@gmail.com>
Thu, 20 Oct 2022 09:49:45 +0000 (12:49 +0300)
committerJason A. Donenfeld <Jason@zx2c4.com>
Fri, 18 Nov 2022 23:56:15 +0000 (00:56 +0100)
struct p4_event_bind::cntr[][] should be signed because of
the following code:

int i, j;
        for (i = 0; i < P4_CNTR_LIMIT; i++) {
  --->          j = bind->cntr[thread][i];
                if (j != -1 && !test_bit(j, used_mask))
                        return j;
        }

Making this member unsigned will make "j" 255 and fail "j != -1"
comparison.

Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
arch/x86/events/intel/p4.c

index 03bbcc2fa2ff8804a9f1e236a1c6546f29a14299..35936188db01bbad5afee72334a1a52b74c4f6d0 100644 (file)
@@ -24,7 +24,7 @@ struct p4_event_bind {
        unsigned int escr_msr[2];               /* ESCR MSR for this event */
        unsigned int escr_emask;                /* valid ESCR EventMask bits */
        unsigned int shared;                    /* event is shared across threads */
-       char cntr[2][P4_CNTR_LIMIT];            /* counter index (offset), -1 on absence */
+       signed char cntr[2][P4_CNTR_LIMIT];     /* counter index (offset), -1 on absence */
 };
 
 struct p4_pebs_bind {