virNWFilterDriverState: Destroy mutex safely

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>
This commit is contained in:
Tim Wiederhake 2022-04-08 13:46:23 +02:00
parent 008162e12a
commit 8bbb8d6a58
2 changed files with 4 additions and 1 deletions

View File

@ -45,6 +45,7 @@ struct _virNWFilterDriverState {
/* Recursive. Hold for filter changes, instantiation or deletion */
virMutex updateLock;
bool updateLockInitialized;
};
virNWFilterDef *

View 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()))