]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ACPI: CPPC: Fix uninitialized ref variable in cppc_get_perf_caps()
authorPengjie Zhang <zhangpengjie2@huawei.com>
Wed, 11 Mar 2026 07:13:34 +0000 (15:13 +0800)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Wed, 11 Mar 2026 11:34:02 +0000 (12:34 +0100)
Commit 8505bfb4e4ec ("ACPI: CPPC: Move reference performance
to capabilities") introduced a logical error when retrieving
the reference performance.

On platforms lacking the reference performance register, the fallback
logic leaves the local 'ref' variable uninitialized (0). This causes
the subsequent sanity check to incorrectly return -EFAULT, breaking
amd_pstate initialization.

Fix this by assigning 'ref = nom' in the fallback path.

Fixes: 8505bfb4e4ec ("ACPI: CPPC: Move reference performance to capabilities")
Reported-by: Nathan Chancellor <nathan@kernel.org>
Closes: https://lore.kernel.org/all/20260310003026.GA2639793@ax162/
Tested-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Pengjie Zhang <zhangpengjie2@huawei.com>
[ rjw: Subject tweak ]
Link: https://patch.msgid.link/20260311071334.1494960-1-zhangpengjie2@huawei.com
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/acpi/cppc_acpi.c

index 07bbf5b366a4296ef7a1dc93b281e9e256da3548..5ad922eb937a998900e49b99b7bc12bdc09da36e 100644 (file)
@@ -1407,12 +1407,11 @@ int cppc_get_perf_caps(int cpunum, struct cppc_perf_caps *perf_caps)
         * If reference perf register is not supported then we should
         * use the nominal perf value
         */
-       if (CPC_SUPPORTED(reference_reg)) {
+       if (CPC_SUPPORTED(reference_reg))
                cpc_read(cpunum, reference_reg, &ref);
-               perf_caps->reference_perf = ref;
-       } else {
-               perf_caps->reference_perf = nom;
-       }
+       else
+               ref = nom;
+       perf_caps->reference_perf = ref;
 
        if (guaranteed_reg->type != ACPI_TYPE_BUFFER  ||
            IS_NULL_REG(&guaranteed_reg->cpc_entry.reg)) {