[libvirt] [PATCH] qemu: Clenup qemuDomainSetInterfaceParameters

Michal Privoznik mprivozn at redhat.com
Tue Jan 31 12:51:27 UTC 2012


which contained some useless lines, copied code, NULL
dereference.
---
 src/libvirt.c          |    4 ++--
 src/qemu/qemu_driver.c |   44 ++++++++++++++++----------------------------
 2 files changed, 18 insertions(+), 30 deletions(-)

diff --git a/src/libvirt.c b/src/libvirt.c
index e702a34..433ae0a 100644
--- a/src/libvirt.c
+++ b/src/libvirt.c
@@ -7226,8 +7226,8 @@ error:
  *
  * Change a subset or all parameters of interface; currently this
  * includes bandwidth parameters.  The value of @flags should be
- * either VIR_DOMAIN_AFFECT_CURRENT, or a bitwise-or of values from
- * VIR_DOMAIN_AFFECT_LIVE and VIR_DOMAIN_AFFECT_CURRENT, although
+ * either VIR_DOMAIN_AFFECT_CURRENT, or a bitwise-or of values
+ * VIR_DOMAIN_AFFECT_LIVE and VIR_DOMAIN_AFFECT_CONFIG, although
  * hypervisors vary in which flags are supported.
  *
  * This function may require privileged access to the hypervisor.
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 1b147a9..b1d0b7f 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -7779,20 +7779,12 @@ qemuDomainSetInterfaceParameters(virDomainPtr dom,
         }
     }
 
-    if (VIR_ALLOC(bandwidth) < 0) {
+    if ((VIR_ALLOC(bandwidth) < 0) ||
+        (VIR_ALLOC(bandwidth->in) < 0) ||
+        (VIR_ALLOC(bandwidth->out) < 0)) {
         virReportOOMError();
         goto cleanup;
     }
-    if (VIR_ALLOC(bandwidth->in) < 0) {
-        virReportOOMError();
-        goto cleanup;
-    }
-    memset(bandwidth->in, 0, sizeof(*bandwidth->in));
-    if (VIR_ALLOC(bandwidth->out) < 0) {
-        virReportOOMError();
-        goto cleanup;
-    }
-    memset(bandwidth->out, 0, sizeof(*bandwidth->out));
 
     for (i = 0; i < nparams; i++) {
         virTypedParameterPtr param = &params[i];
@@ -7817,11 +7809,9 @@ qemuDomainSetInterfaceParameters(virDomainPtr dom,
      * inbound/outbound to not be set. */
     if (!bandwidth->in->average) {
         VIR_FREE(bandwidth->in);
-        bandwidth->in = NULL;
     }
     if (!bandwidth->out->average) {
         VIR_FREE(bandwidth->out);
-        bandwidth->out = NULL;
     }
 
     if (flags & VIR_DOMAIN_AFFECT_LIVE) {
@@ -7833,29 +7823,27 @@ qemuDomainSetInterfaceParameters(virDomainPtr dom,
         /* virNetDevBandwidthSet() will clear any previous value of
          * bandwidth parameters, so merge with old bandwidth parameters
          * here to prevent them from being lost. */
-        if (bandwidth->in || net->bandwidth->in) {
+        if (bandwidth->in ||
+            (net->bandwidth && net->bandwidth->in)) {
             if (VIR_ALLOC(newBandwidth->in) < 0) {
                 virReportOOMError();
                 goto cleanup;
             }
-            if (bandwidth->in)
-                memcpy(newBandwidth->in, bandwidth->in,
-                       sizeof(*newBandwidth->in));
-            else if (net->bandwidth->in)
-                memcpy(newBandwidth->in, net->bandwidth->in,
-                       sizeof(*newBandwidth->in));
-        }
-        if (bandwidth->out || net->bandwidth->out) {
+
+            memcpy(newBandwidth->in,
+                   bandwidth->in ? bandwidth->in : net->bandwidth->in,
+                   sizeof(*newBandwidth->in));
+        }
+        if (bandwidth->out ||
+            (net->bandwidth && net->bandwidth->out)) {
             if (VIR_ALLOC(newBandwidth->out) < 0) {
                 virReportOOMError();
                 goto cleanup;
             }
-            if (bandwidth->out)
-                memcpy(newBandwidth->out, bandwidth->out,
-                       sizeof(*newBandwidth->out));
-            else if (net->bandwidth->out)
-                memcpy(newBandwidth->out, net->bandwidth->out,
-                       sizeof(*newBandwidth->out));
+
+            memcpy(newBandwidth->out,
+                   bandwidth->out ? bandwidth->out : net->bandwidth->out,
+                   sizeof(*newBandwidth->out));
         }
 
         if (virNetDevBandwidthSet(net->ifname, newBandwidth) < 0) {
-- 
1.7.3.4




More information about the libvir-list mailing list