[libvirt] [PATCH] Error path mutex unlock in virGetStorageVol.

Chris Lalancette clalance at redhat.com
Fri Aug 7 09:06:15 UTC 2009


Signed-off-by: Chris Lalancette <clalance at redhat.com>
---
 src/datatypes.c |    5 +----
 1 files changed, 1 insertions(+), 4 deletions(-)

diff --git a/src/datatypes.c b/src/datatypes.c
index 1889dc3..ac61682 100644
--- a/src/datatypes.c
+++ b/src/datatypes.c
@@ -863,19 +863,16 @@ virGetStorageVol(virConnectPtr conn, const char *pool, const char *name, const c
     ret = (virStorageVolPtr) virHashLookup(conn->storageVols, key);
     if (ret == NULL) {
         if (VIR_ALLOC(ret) < 0) {
-            virMutexUnlock(&conn->lock);
             virReportOOMError(conn);
             goto error;
         }
         ret->pool = strdup(pool);
         if (ret->pool == NULL) {
-            virMutexUnlock(&conn->lock);
             virReportOOMError(conn);
             goto error;
         }
         ret->name = strdup(name);
         if (ret->name == NULL) {
-            virMutexUnlock(&conn->lock);
             virReportOOMError(conn);
             goto error;
         }
@@ -885,7 +882,6 @@ virGetStorageVol(virConnectPtr conn, const char *pool, const char *name, const c
         ret->conn = conn;
 
         if (virHashAddEntry(conn->storageVols, key, ret) < 0) {
-            virMutexUnlock(&conn->lock);
             virLibConnError(conn, VIR_ERR_INTERNAL_ERROR,
                             "%s", _("failed to add storage vol to connection hash table"));
             goto error;
@@ -897,6 +893,7 @@ virGetStorageVol(virConnectPtr conn, const char *pool, const char *name, const c
     return(ret);
 
 error:
+    virMutexUnlock(&conn->lock);
     if (ret != NULL) {
         VIR_FREE(ret->name);
         VIR_FREE(ret->pool);
-- 
1.6.0.6




More information about the libvir-list mailing list