On a Friday in 2023, Michal Privoznik wrote:
If a per-domain SWTPM state directory exists but is empty our code still considers it a valid state and skips running 'swtpm_setup' (handled in qemuTPMEmulatorRunSetup()). While we should not try to inspect individual files created by swtpm, we can still consider empty folder as non-existent state. Resolves: https://gitlab.com/libvirt/libvirt/-/issues/320 Signed-off-by: Michal Privoznik <mprivozn@xxxxxxxxxx> --- src/qemu/qemu_tpm.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/qemu/qemu_tpm.c b/src/qemu/qemu_tpm.c index 0b77ce2bc7..121f98174c 100644 --- a/src/qemu/qemu_tpm.c +++ b/src/qemu/qemu_tpm.c @@ -186,7 +186,8 @@ qemuTPMEmulatorCreateStorage(virDomainTPMDef *tpm, *created = false; - if (!virFileExists(storagepath)) + if (!virFileExists(storagepath) || + virDirIsEmpty(storagepath, false) > 0) *created = true;
This means we will possibly delete a directory we did not create on error in qemuTPMEmulatorBuildCommand. That is possibly harmless, but I would call virDirIsEmpty with hidden=true, to make sure we don't delete a non-empty directory. Reviewed-by: Ján Tomko <jtomko@xxxxxxxxxx> Jano
if (virDirCreate(storagepath, 0700, swtpm_user, swtpm_group, -- 2.41.0
Attachment:
signature.asc
Description: PGP signature