]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
virtpm: Use automatic mutex management
authorTim Wiederhake <twiederh@redhat.com>
Tue, 8 Feb 2022 13:50:12 +0000 (14:50 +0100)
committerTim Wiederhake <twiederh@redhat.com>
Fri, 11 Feb 2022 15:03:24 +0000 (16:03 +0100)
Signed-off-by: Tim Wiederhake <twiederh@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
src/util/virtpm.c

index c02b42f948a70f45f4ea7dcc0a0e6c2bdf212e01..ca7506d82e8fdb3760877b245fb35f78714ec20c 100644 (file)
@@ -137,18 +137,12 @@ static int virTPMEmulatorInit(bool quiet);
 static char *
 virTPMBinaryGetPath(virTPMBinary binary)
 {
-    char *s = NULL;
-
-    virMutexLock(&swtpm_tools_lock);
+    VIR_LOCK_GUARD lock = virLockGuardLock(&swtpm_tools_lock);
 
     if (virTPMEmulatorInit(false) < 0)
-        goto cleanup;
-
-    s = g_strdup(swtpmBinaries[binary].path);
+        return NULL;
 
- cleanup:
-    virMutexUnlock(&swtpm_tools_lock);
-    return s;
+    return g_strdup(swtpmBinaries[binary].path);
 }
 
 char *
@@ -171,20 +165,14 @@ virTPMGetSwtpmIoctl(void)
 
 bool virTPMHasSwtpm(void)
 {
-    bool ret = false;
-
-    virMutexLock(&swtpm_tools_lock);
+    VIR_LOCK_GUARD lock = virLockGuardLock(&swtpm_tools_lock);
 
     if (virTPMEmulatorInit(true) < 0)
-        goto cleanup;
+        return false;
 
-    ret = swtpmBinaries[VIR_TPM_BINARY_SWTPM].path != NULL &&
+    return swtpmBinaries[VIR_TPM_BINARY_SWTPM].path != NULL &&
         swtpmBinaries[VIR_TPM_BINARY_SWTPM_SETUP].path != NULL &&
         swtpmBinaries[VIR_TPM_BINARY_SWTPM_IOCTL].path != NULL;
-
- cleanup:
-    virMutexUnlock(&swtpm_tools_lock);
-    return ret;
 }
 
 /* virTPMExecGetCaps
@@ -341,12 +329,10 @@ static bool
 virTPMBinaryGetCaps(virTPMBinary binary,
                     unsigned int cap)
 {
-    bool ret = false;
-
-    virMutexLock(&swtpm_tools_lock);
+    VIR_LOCK_GUARD lock = virLockGuardLock(&swtpm_tools_lock);
 
     if (virTPMEmulatorInit(false) < 0)
-        goto cleanup;
+        return false;
 
     if (!swtpmBinaries[binary].caps &&
         swtpmBinaries[binary].capsParse) {
@@ -355,12 +341,11 @@ virTPMBinaryGetCaps(virTPMBinary binary,
             swtpmBinaries[binary].path,
             swtpmBinaries[binary].parm);
     }
-    if (swtpmBinaries[binary].caps)
-        ret = virBitmapIsBitSet(swtpmBinaries[binary].caps, cap);
 
- cleanup:
-    virMutexUnlock(&swtpm_tools_lock);
-    return ret;
+    if (!swtpmBinaries[binary].caps)
+        return false;
+
+    return virBitmapIsBitSet(swtpmBinaries[binary].caps, cap);
 }
 
 bool