From: John Ferlan Date: Tue, 25 Mar 2014 17:09:05 +0000 (-0400) Subject: Coverity: Resolve a RESOURCE_LEAK X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=c668cd50cb20f2ba45170d16df0865646e3c5be2;p=libvirt.git Coverity: Resolve a RESOURCE_LEAK On error the lofd would have been leaked. --- diff --git a/src/lxc/lxc_controller.c b/src/lxc/lxc_controller.c index 800a306cfd..3bc15cc5fe 100644 --- a/src/lxc/lxc_controller.c +++ b/src/lxc/lxc_controller.c @@ -383,6 +383,7 @@ static int virLXCControllerSetupLoopDeviceDisk(virDomainDiskDefPtr disk) int lofd; char *loname = NULL; const char *src = virDomainDiskGetSource(disk); + int ret = -1; if ((lofd = virFileLoopDeviceAssociate(src, &loname)) < 0) return -1; @@ -395,13 +396,18 @@ static int virLXCControllerSetupLoopDeviceDisk(virDomainDiskDefPtr disk) * the rest of container setup 'just works' */ virDomainDiskSetType(disk, VIR_DOMAIN_DISK_TYPE_BLOCK); - if (virDomainDiskSetSource(disk, loname) < 0) { - VIR_FREE(loname); - return -1; - } + if (virDomainDiskSetSource(disk, loname) < 0) + goto cleanup; + + ret = 0; + + cleanup: VIR_FREE(loname); + if (ret < 0) + VIR_FORCE_CLOSE(lofd); return lofd; + }