Re: [PATCH] ACPI: CPPC: Fix uninitialized ref variable in cppc_get_perf_caps

From: Rafael J. Wysocki

Date: Wed Mar 11 2026 - 07:40:42 EST


On Wed, Mar 11, 2026 at 8:13 AM Pengjie Zhang <zhangpengjie2@xxxxxxxxxx> wrote:
>
> 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@xxxxxxxxxx>
> Closes: https://lore.kernel.org/all/20260310003026.GA2639793@ax162/
> Tested-by: Nathan Chancellor <nathan@xxxxxxxxxx>
> Signed-off-by: Pengjie Zhang <zhangpengjie2@xxxxxxxxxx>
> ---
> This is on top of linux-next.
> ---
> drivers/acpi/cppc_acpi.c | 9 ++++-----
> 1 file changed, 4 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/acpi/cppc_acpi.c b/drivers/acpi/cppc_acpi.c
> index 07bbf5b366a4..5ad922eb937a 100644
> --- a/drivers/acpi/cppc_acpi.c
> +++ b/drivers/acpi/cppc_acpi.c
> @@ -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)) {
> --

Applied, thanks!