}
-void
+int
qemuSecurityCleanupTPMEmulator(virQEMUDriver *driver,
virDomainObj *vm,
bool restoreTPMStateLabel)
{
qemuDomainObjPrivate *priv = vm->privateData;
- bool transactionStarted = false;
+ int ret = -1;
- if (virSecurityManagerTransactionStart(driver->securityManager) >= 0)
- transactionStarted = true;
+ if (virSecurityManagerTransactionStart(driver->securityManager) < 0)
+ goto cleanup;
- virSecurityManagerRestoreTPMLabels(driver->securityManager,
- vm->def, restoreTPMStateLabel);
+ if (virSecurityManagerRestoreTPMLabels(driver->securityManager,
+ vm->def, restoreTPMStateLabel) < 0)
+ goto cleanup;
- if (transactionStarted &&
- virSecurityManagerTransactionCommit(driver->securityManager,
+ if (virSecurityManagerTransactionCommit(driver->securityManager,
-1, priv->rememberOwner) < 0)
- VIR_WARN("Unable to run security manager transaction");
+ goto cleanup;
+ ret = 0;
+ cleanup:
virSecurityManagerTransactionAbort(driver->securityManager);
+ return ret;
}
int *exitstatus,
int *cmdret);
-void qemuSecurityCleanupTPMEmulator(virQEMUDriver *driver,
- virDomainObj *vm,
- bool restoreTPMStateLabel);
+int qemuSecurityCleanupTPMEmulator(virQEMUDriver *driver,
+ virDomainObj *vm,
+ bool restoreTPMStateLabel);
int qemuSecuritySetSavedStateLabel(virQEMUDriver *driver,
virDomainObj *vm,
if (outgoingMigration || qemuTPMHasSharedStorage(vm->def))
restoreTPMStateLabel = false;
- qemuSecurityCleanupTPMEmulator(driver, vm, restoreTPMStateLabel);
+ if (qemuSecurityCleanupTPMEmulator(driver, vm, restoreTPMStateLabel) < 0)
+ VIR_WARN("Unable to restore labels on TPM state and/or log file");
}