[libvirt] [PATCH 1/2] storage: Fix coverity warning
John Ferlan
jferlan at redhat.com
Tue Aug 20 14:43:40 UTC 2013
On 08/20/2013 05:08 AM, Osier Yang wrote:
> 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 | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/src/storage/storage_driver.c b/src/storage/storage_driver.c
> index 7908ba6..63a954b 100644
> --- a/src/storage/storage_driver.c
> +++ b/src/storage/storage_driver.c
> @@ -1758,7 +1758,6 @@ storageVolCreateXMLFrom(virStoragePoolPtr obj,
>
> origvol->building = 0;
> newvol->building = 0;
> - newvol = NULL;
> pool->asyncjobs--;
>
> if (origpool) {
...
The next condition is:
if (buildret < 0) {
virStoragePoolObjUnlock(pool);
storageVolDelete(volobj, 0);
pool = NULL;
goto cleanup;
}
Since previously we'd have 'newvol = NULL;' already, there would need to
be one added here too.. Since, prior to this there's code:
pool->volumes.objs[pool->volumes.count++] = newvol;
which saves the pointer...
Perhaps it'd work better to do the following:
unsigned long long allocation = 0x0ULL;
...
allocation = newvol->allocation;
newvol = NULL;
...
pool->def->allocation += allocation;
pool->def->available -= allocation;
> @@ -1781,6 +1780,7 @@ storageVolCreateXMLFrom(virStoragePoolPtr obj,
> VIR_INFO("Creating volume '%s' in storage pool '%s'",
> volobj->name, pool->def->name);
> ret = volobj;
> + newvol = NULL;
and this would become unnecessary
> volobj = NULL;
>
> cleanup:
>
More information about the libvir-list
mailing list