[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [PATCH 1/2] x86: fix memory leak in pvh_setup_acpi_madt



Switch to use goto style error handling to avoid leaking madt.

Coverity-ID: 1401534

Signed-off-by: Wei Liu <wei.liu2@xxxxxxxxxx>
---
 xen/arch/x86/domain_build.c | 17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 deletions(-)

diff --git a/xen/arch/x86/domain_build.c b/xen/arch/x86/domain_build.c
index 0534838c8e..1f18f9283f 100644
--- a/xen/arch/x86/domain_build.c
+++ b/xen/arch/x86/domain_build.c
@@ -2290,7 +2290,8 @@ static int __init pvh_setup_acpi_madt(struct domain *d, 
paddr_t *addr)
     if ( !madt )
     {
         printk("Unable to allocate memory for MADT table\n");
-        return -ENOMEM;
+        rc = -ENOMEM;
+        goto out;
     }
 
     /* Copy the native MADT table header. */
@@ -2298,7 +2299,8 @@ static int __init pvh_setup_acpi_madt(struct domain *d, 
paddr_t *addr)
     if ( !ACPI_SUCCESS(status) )
     {
         printk("Failed to get MADT ACPI table, aborting.\n");
-        return -EINVAL;
+        rc = -EINVAL;
+        goto out;
     }
     madt->header = *table;
     madt->address = APIC_DEFAULT_PHYS_BASE;
@@ -2358,7 +2360,8 @@ static int __init pvh_setup_acpi_madt(struct domain *d, 
paddr_t *addr)
     if ( pvh_steal_ram(d, size, 0, GB(4), addr) )
     {
         printk("Unable to find allocate guest RAM for MADT\n");
-        return -ENOMEM;
+        rc = -ENOMEM;
+        goto out;
     }
 
     /* Mark this region as E820_ACPI. */
@@ -2369,11 +2372,15 @@ static int __init pvh_setup_acpi_madt(struct domain *d, 
paddr_t *addr)
     if ( rc )
     {
         printk("Unable to copy MADT into guest memory\n");
-        return rc;
+        goto out;
     }
+
+    rc = 0;
+
+ out:
     xfree(madt);
 
-    return 0;
+    return rc;
 }
 
 static bool __init acpi_memory_banned(unsigned long address,
-- 
2.11.0


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.