Re: 174cc7187e6f ACPICA: Tables: Back port acpi_get_table_with_size() and early_acpi_os_unmap_memory() from Linux kernel

From: Rafael J. Wysocki
Date: Mon Jan 09 2017 - 17:45:36 EST


On Monday, January 09, 2017 11:52:26 AM Jörg Rödel wrote:
> Hi Rafael,
>
> On Sun, Jan 08, 2017 at 03:20:20AM +0100, Rafael J. Wysocki wrote:
> > ---
> > drivers/iommu/amd_iommu_init.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > Index: linux-pm/drivers/iommu/amd_iommu_init.c
> > ===================================================================
> > --- linux-pm.orig/drivers/iommu/amd_iommu_init.c
> > +++ linux-pm/drivers/iommu/amd_iommu_init.c
> > @@ -2230,7 +2230,7 @@ static int __init early_amd_iommu_init(v
> > */
> > ret = check_ivrs_checksum(ivrs_base);
> > if (ret)
> > - return ret;
> > + goto out;
> >
> > amd_iommu_target_ivhd_type = get_highest_supported_ivhd_type(ivrs_base);
> > DUMP_printk("Using IVHD type %#x\n", amd_iommu_target_ivhd_type);
>
> Yeah, good catch. Can you send me a patch for this and I am going to
> send the fix upstream asap.

Please find appended.

Thanks,
Rafael

---
From: Rafael J. Wysocki <rafael.j.wysocki@xxxxxxxxx>
Subject: [PATCH] IOMMU / AMD: Fix error code path in early_amd_iommu_init()

Prevent early_amd_iommu_init() from leaking memory mapped via
acpi_get_table() if check_ivrs_checksum() returns an error.

Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@xxxxxxxxx>
---
drivers/iommu/amd_iommu_init.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

Index: linux-pm/drivers/iommu/amd_iommu_init.c
===================================================================
--- linux-pm.orig/drivers/iommu/amd_iommu_init.c
+++ linux-pm/drivers/iommu/amd_iommu_init.c
@@ -2230,7 +2230,7 @@ static int __init early_amd_iommu_init(v
*/
ret = check_ivrs_checksum(ivrs_base);
if (ret)
- return ret;
+ goto out;

amd_iommu_target_ivhd_type = get_highest_supported_ivhd_type(ivrs_base);
DUMP_printk("Using IVHD type %#x\n", amd_iommu_target_ivhd_type);