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@redhat.com>
---
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;
if (virDirCreate(storagepath, 0700, swtpm_user, swtpm_group,
--
2.41.0
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@redhat.com> >--- > 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@redhat.com> Jano > if (virDirCreate(storagepath, 0700, swtpm_user, swtpm_group, >-- >2.41.0 >
© 2016 - 2026 Red Hat, Inc.