]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
tools/arch/x86/intel_sdsi: Fix meter_certificate decoding
authorDavid E. Box <david.e.box@linux.intel.com>
Thu, 11 Apr 2024 02:58:54 +0000 (19:58 -0700)
committerHans de Goede <hdegoede@redhat.com>
Mon, 29 Apr 2024 08:52:02 +0000 (10:52 +0200)
Fix errors in the calculation of the start position of the counters and in
the display loop. While here, use a #define for the bundle count and size.

Fixes: 7fdc03a7370f ("tools/arch/x86: intel_sdsi: Add support for reading meter certificates")
Signed-off-by: David E. Box <david.e.box@linux.intel.com>
Reviewed-by: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Link: https://lore.kernel.org/r/20240411025856.2782476-8-david.e.box@linux.intel.com
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
tools/arch/x86/intel_sdsi/intel_sdsi.c

index ae29214da102917db49ce86ab8601d82a4d52fda..ba2a6b6645ae845178265bbce099f3eae1ff76db 100644 (file)
@@ -394,7 +394,7 @@ static int sdsi_meter_cert_show(struct sdsi_dev *s)
        printf("MMRC encoding:                %.4s\n", name);
 
        printf("MMRC counter:                 %d\n", mc->mmrc_counter);
-       if (mc->bundle_length % 8) {
+       if (mc->bundle_length % METER_BUNDLE_SIZE) {
                fprintf(stderr, "Invalid bundle length\n");
                return -1;
        }
@@ -405,15 +405,16 @@ static int sdsi_meter_cert_show(struct sdsi_dev *s)
                return -1;
        }
 
-       bec = (void *)(mc) + sizeof(mc);
+       bec = (struct bundle_encoding_counter *)(mc + 1);
 
        printf("Number of Feature Counters:   %ld\n", BUNDLE_COUNT(mc->bundle_length));
-       while (count++ < mc->bundle_length / 8) {
+       while (count < BUNDLE_COUNT(mc->bundle_length)) {
                char feature[5];
 
                feature[4] = '\0';
                get_feature(bec[count].encoding, feature);
                printf("    %s:          %d\n", feature, bec[count].counter);
+               ++count;
        }
 
        return 0;