platform/x86/intel/pmc: Fix hang in pmc_core_send_ltr_ignore()
authorRajvi Jingar <rajvi.jingar@linux.intel.com>
Sat, 16 Dec 2023 01:16:50 +0000 (17:16 -0800)
committerIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
Mon, 18 Dec 2023 12:45:32 +0000 (14:45 +0200)
For input value 0, PMC stays unassigned which causes crash while trying
to access PMC for register read/write. Include LTR index 0 in pmc_index
and ltr_index calculation.

Fixes: 2bcef4529222 ("platform/x86:intel/pmc: Enable debugfs multiple PMC support")
Signed-off-by: Rajvi Jingar <rajvi.jingar@linux.intel.com>
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Link: https://lore.kernel.org/r/20231216011650.1973941-1-rajvi.jingar@linux.intel.com
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
drivers/platform/x86/intel/pmc/core.c

index 84c175b9721a0b9af97f4ea2390f58a06c479294..e95d3011b9997d5afec7206f9d97f7013132f42c 100644 (file)
@@ -472,7 +472,7 @@ int pmc_core_send_ltr_ignore(struct pmc_dev *pmcdev, u32 value)
         * is based on the contiguous indexes from ltr_show output.
         * pmc index and ltr index needs to be calculated from it.
         */
-       for (pmc_index = 0; pmc_index < ARRAY_SIZE(pmcdev->pmcs) && ltr_index > 0; pmc_index++) {
+       for (pmc_index = 0; pmc_index < ARRAY_SIZE(pmcdev->pmcs) && ltr_index >= 0; pmc_index++) {
                pmc = pmcdev->pmcs[pmc_index];
 
                if (!pmc)