]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
virNWFilterDriverState: Destroy mutex safely
authorTim Wiederhake <twiederh@redhat.com>
Fri, 8 Apr 2022 11:46:23 +0000 (13:46 +0200)
committerTim Wiederhake <twiederh@redhat.com>
Fri, 8 Apr 2022 14:43:16 +0000 (16:43 +0200)
Allow nwfilterStateCleanupLocked to be called on a partially constructed
driver object.

This enables the next patch to simplify and fix error handling in
nwfilterStateInitialize.

Signed-off-by: Tim Wiederhake <twiederh@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
src/conf/virnwfilterobj.h
src/nwfilter/nwfilter_driver.c

index cb103280e8edd58a34fce33fa1eb08423464e4c5..b67dc017c55495a323c445aefed578d533a1a81b 100644 (file)
@@ -45,6 +45,7 @@ struct _virNWFilterDriverState {
 
     /* Recursive. Hold for filter changes, instantiation or deletion */
     virMutex updateLock;
+    bool updateLockInitialized;
 };
 
 virNWFilterDef *
index f89b5b87574150c4bb63d2586c771cfb30602bb2..bf17c5ea669ff42421a36498c76a60382ea2929c 100644 (file)
@@ -173,7 +173,8 @@ nwfilterStateCleanupLocked(void)
     /* free inactive nwfilters */
     virNWFilterObjListFree(driver->nwfilters);
 
-    virMutexDestroy(&driver->updateLock);
+    if (driver->updateLockInitialized)
+        virMutexDestroy(&driver->updateLock);
     g_clear_pointer(&driver, g_free);
 
     return 0;
@@ -222,6 +223,7 @@ nwfilterStateInitialize(bool privileged,
     if (virMutexInitRecursive(&driver->updateLock) < 0)
         goto err_free_driverstate;
 
+    driver->updateLockInitialized = true;
     driver->privileged = privileged;
 
     if (!(driver->nwfilters = virNWFilterObjListNew()))