commit: 71efa13d1596686c6417a38427a7c347c235c85f Author: Michal Privoznik <michal.privoznik <AT> gmail <DOT> com> AuthorDate: Thu Dec 26 11:02:04 2024 +0000 Commit: Sam James <sam <AT> gentoo <DOT> org> CommitDate: Thu Dec 26 11:13:07 2024 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=71efa13d
app-emulation/libvirt: Backport a TPM related crasher When installing a VM, it may happen that layered tools like virt-install will add TPM to domain definition (some guests like Windows 11 require it). But in libvirt-10.10.0 there is a crasher and those layered tools tickle it. Backport a fix from upstream. Closes: https://bugs.gentoo.org/946930 Signed-off-by: Michal Privoznik <michal.privoznik <AT> gmail.com> Closes: https://github.com/gentoo/gentoo/pull/39845 Signed-off-by: Sam James <sam <AT> gentoo.org> ...-not-update-profile-name-for-transient-do.patch | 70 ++++++++++++++++++++++ ...rt-10.10.0.ebuild => libvirt-10.10.0-r1.ebuild} | 1 + 2 files changed, 71 insertions(+) diff --git a/app-emulation/libvirt/files/libvirt-10.10.0-qemu-tpm-do-not-update-profile-name-for-transient-do.patch b/app-emulation/libvirt/files/libvirt-10.10.0-qemu-tpm-do-not-update-profile-name-for-transient-do.patch new file mode 100644 index 000000000000..e3289651f332 --- /dev/null +++ b/app-emulation/libvirt/files/libvirt-10.10.0-qemu-tpm-do-not-update-profile-name-for-transient-do.patch @@ -0,0 +1,70 @@ +From 81da7a2c2a2d490cddaaa77d3e3b36e210b38bd7 Mon Sep 17 00:00:00 2001 +Message-ID: <81da7a2c2a2d490cddaaa77d3e3b36e210b38bd7.1735210585.git.mpriv...@redhat.com> +From: =?UTF-8?q?J=C3=A1n=20Tomko?= <[email protected]> +Date: Tue, 3 Dec 2024 12:00:08 +0100 +Subject: [PATCH] qemu: tpm: do not update profile name for transient domains +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +If we do not have a persistent definition, there's no point in +looking for it since we cannot store it. + +Also skip the update if the tpm device(s) in the persistent +definition are different. + +This fixes the crash when starting a transient domain. + +https://issues.redhat.com/browse/RHEL-69774 +https://gitlab.com/libvirt/libvirt/-/issues/715 + +Fixes: d79542eec669eb9c449bb8228179e7a87e768017 +Signed-off-by: Ján Tomko <[email protected]> +Reviewed-by: Jiri Denemark <[email protected]> +Reviewed-by: Stefan Berger <[email protected]> +Signed-off-by: Michal Privoznik <[email protected]> +--- + src/qemu/qemu_extdevice.c | 13 ++++++++++++- + src/qemu/qemu_tpm.c | 2 +- + 2 files changed, 13 insertions(+), 2 deletions(-) + +diff --git a/src/qemu/qemu_extdevice.c b/src/qemu/qemu_extdevice.c +index a6f31f9773..954cb323a4 100644 +--- a/src/qemu/qemu_extdevice.c ++++ b/src/qemu/qemu_extdevice.c +@@ -190,7 +190,18 @@ qemuExtDevicesStart(virQEMUDriver *driver, + + for (i = 0; i < def->ntpms; i++) { + virDomainTPMDef *tpm = def->tpms[i]; +- virDomainTPMDef *persistentTPMDef = persistentDef->tpms[i]; ++ virDomainTPMDef *persistentTPMDef = NULL; ++ ++ if (persistentDef) { ++ /* do not try to update the profile in the persistent definition ++ * if the device does not match */ ++ if (persistentDef->ntpms == def->ntpms) ++ persistentTPMDef = persistentDef->tpms[i]; ++ if (persistentTPMDef && ++ (persistentTPMDef->type != tpm->type || ++ persistentTPMDef->model != tpm->model)) ++ persistentTPMDef = NULL; ++ } + + if (tpm->type == VIR_DOMAIN_TPM_TYPE_EMULATOR && + qemuExtTPMStart(driver, vm, tpm, persistentTPMDef, +diff --git a/src/qemu/qemu_tpm.c b/src/qemu/qemu_tpm.c +index f223dcb9ae..f5e0184e54 100644 +--- a/src/qemu/qemu_tpm.c ++++ b/src/qemu/qemu_tpm.c +@@ -773,7 +773,7 @@ qemuTPMEmulatorBuildCommand(virDomainTPMDef *tpm, + incomingMigration) < 0) + goto error; + +- if (run_setup && !incomingMigration && ++ if (run_setup && !incomingMigration && persistentTPMDef && + qemuTPMEmulatorUpdateProfileName(&tpm->data.emulator, persistentTPMDef, + cfg, saveDef) < 0) + goto error; +-- +2.45.2 + diff --git a/app-emulation/libvirt/libvirt-10.10.0.ebuild b/app-emulation/libvirt/libvirt-10.10.0-r1.ebuild similarity index 99% rename from app-emulation/libvirt/libvirt-10.10.0.ebuild rename to app-emulation/libvirt/libvirt-10.10.0-r1.ebuild index d87fbdaace17..39ba18558c54 100644 --- a/app-emulation/libvirt/libvirt-10.10.0.ebuild +++ b/app-emulation/libvirt/libvirt-10.10.0-r1.ebuild @@ -159,6 +159,7 @@ PATCHES=( "${FILESDIR}"/${PN}-9.4.0-fix_paths_in_libvirt-guests_sh.patch "${FILESDIR}"/${PN}-9.9.0-do-not-use-sysconfig.patch "${FILESDIR}"/${PN}-10.7.0-fix-paths-for-apparmor.patch + "${FILESDIR}"/${PN}-10.10.0-qemu-tpm-do-not-update-profile-name-for-transient-do.patch ) python_check_deps() {
