Unverified Commit d3a8ca2e authored by Zhen Ni's avatar Zhen Ni Committed by Ilpo Järvinen
Browse files

platform/x86/amd: hfi: Fix pcct_tbl leak in amd_hfi_metadata_parser()



Fix a permanent ACPI table memory leak when amd_hfi_metadata_parser()
fails due to invalid PCCT table length or memory allocation errors.

Fixes: d4e95ea7 ("platform/x86: hfi: Parse CPU core ranking data from shared memory")
Cc: stable@vger.kernel.org
Signed-off-by: default avatarZhen Ni <zhen.ni@easystack.cn>
Reviewed-by: default avatarMario Limonciello (AMD) <superm1@kernel.org>
Link: https://lore.kernel.org/r/20250822083329.710857-1-zhen.ni@easystack.cn


Reviewed-by: default avatarIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: default avatarIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
parent 748f8975
Loading
Loading
Loading
Loading
+10 −4
Original line number Diff line number Diff line
@@ -385,12 +385,16 @@ static int amd_hfi_metadata_parser(struct platform_device *pdev,
	amd_hfi_data->pcct_entry = pcct_entry;
	pcct_ext = (struct acpi_pcct_ext_pcc_slave *)pcct_entry;

	if (pcct_ext->length <= 0)
		return -EINVAL;
	if (pcct_ext->length <= 0) {
		ret = -EINVAL;
		goto out;
	}

	amd_hfi_data->shmem = devm_kzalloc(amd_hfi_data->dev, pcct_ext->length, GFP_KERNEL);
	if (!amd_hfi_data->shmem)
		return -ENOMEM;
	if (!amd_hfi_data->shmem) {
		ret = -ENOMEM;
		goto out;
	}

	pcc_chan->shmem_base_addr = pcct_ext->base_address;
	pcc_chan->shmem_size = pcct_ext->length;
@@ -398,6 +402,8 @@ static int amd_hfi_metadata_parser(struct platform_device *pdev,
	/* parse the shared memory info from the PCCT table */
	ret = amd_hfi_fill_metadata(amd_hfi_data);

out:
	/* Don't leak any ACPI memory */
	acpi_put_table(pcct_tbl);

	return ret;