[PATCH] conf: fix leak in virDomainVcpuPinAdd

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

 



Fix the leak of vcpupin on failure to allocate cpumask and the leak of
cpumask if we fail to expand vcpupin_list.
---
 src/conf/domain_conf.c |   25 ++++++++++++-------------
 1 files changed, 12 insertions(+), 13 deletions(-)

diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 6feded4..95ecd9d 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -11908,26 +11908,25 @@ int virDomainVcpuPinAdd(virDomainVcpuPinDefPtr **vcpupin_list,
 
     /* No existing vcpupin matches vcpu, adding a new one */
 
-    if (VIR_ALLOC(vcpupin) < 0) {
-        virReportOOMError();
-        return -1;
-    }
+    if (VIR_ALLOC(vcpupin) < 0)
+        goto no_memory;
+
     vcpupin->vcpuid = vcpu;
     vcpupin->cpumask = virBitmapNewData(cpumap, maplen);
-    if (!vcpupin->cpumask) {
-        virReportOOMError();
-        return -1;
-    }
+    if (!vcpupin->cpumask)
+        goto no_memory;
 
-    if (VIR_REALLOC_N(*vcpupin_list, *nvcpupin + 1) < 0) {
-        virReportOOMError();
-        VIR_FREE(vcpupin);
-        return -1;
-    }
+    if (VIR_REALLOC_N(*vcpupin_list, *nvcpupin + 1) < 0)
+        goto no_memory;
 
     (*vcpupin_list)[(*nvcpupin)++] = vcpupin;
 
     return 0;
+
+no_memory:
+    virReportOOMError();
+    virDomainVcpuPinDefFree(vpcupin);
+    return -1;
 }
 
 int
-- 
1.7.8.6

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list


[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]