]> xenbits.xensource.com Git - libvirt.git/commitdiff
storage: Fix coverity warning
authorOsier Yang <jyang@redhat.com>
Tue, 20 Aug 2013 15:28:28 +0000 (23:28 +0800)
committerOsier Yang <jyang@redhat.com>
Wed, 21 Aug 2013 09:28:11 +0000 (17:28 +0800)
Introduced by commit e0139e30444:

1777      /* Updating pool metadata */

(40) Event var_deref_op: Dereferencing null pointer "newvol".
     Also see events: [assign_zero]

1778      pool->def->allocation += newvol->allocation;
1779      pool->def->available -= newvol->allocation;

src/storage/storage_driver.c

index 7908ba669b9638d969fd15fc12f0cf058412dac6..58d0fc0d41f661c06ba4c5e3ed4bbaa347eaa881 100644 (file)
@@ -1635,6 +1635,7 @@ storageVolCreateXMLFrom(virStoragePoolPtr obj,
     virStorageBackendPtr backend;
     virStorageVolDefPtr origvol = NULL, newvol = NULL;
     virStorageVolPtr ret = NULL, volobj = NULL;
+    unsigned long long allocation;
     int buildret;
 
     virCheckFlags(VIR_STORAGE_VOL_CREATE_PREALLOC_METADATA, NULL);
@@ -1758,6 +1759,7 @@ storageVolCreateXMLFrom(virStoragePoolPtr obj,
 
     origvol->building = 0;
     newvol->building = 0;
+    allocation = newvol->allocation;
     newvol = NULL;
     pool->asyncjobs--;
 
@@ -1775,8 +1777,8 @@ storageVolCreateXMLFrom(virStoragePoolPtr obj,
     }
 
     /* Updating pool metadata */
-    pool->def->allocation += newvol->allocation;
-    pool->def->available -= newvol->allocation;
+    pool->def->allocation += allocation;
+    pool->def->available -= allocation;
 
     VIR_INFO("Creating volume '%s' in storage pool '%s'",
              volobj->name, pool->def->name);