On Tue, Dec 10, 2024 at 15:01:16 +0100, Ján Tomko wrote: > 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 > > Fixes: d79542eec669eb9c449bb8228179e7a87e768017 > Signed-off-by: Ján Tomko <jtomko@xxxxxxxxxx> > --- > src/qemu/qemu_extdevice.c | 12 +++++++++++- > src/qemu/qemu_tpm.c | 2 +- > 2 files changed, 12 insertions(+), 2 deletions(-) > > diff --git a/src/qemu/qemu_extdevice.c b/src/qemu/qemu_extdevice.c > index a6f31f9773..21db01a361 100644 > --- a/src/qemu/qemu_extdevice.c > +++ b/src/qemu/qemu_extdevice.c > @@ -190,7 +190,17 @@ 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]; persistentTPMDef may still be NULL here and the following check will happily dereference it > + if (persistentTPMDef->type != tpm->type || > + persistentTPMDef->model != tpm->model) > + persistentTPMDef = NULL; > + } > > if (tpm->type == VIR_DOMAIN_TPM_TYPE_EMULATOR && > qemuExtTPMStart(driver, vm, tpm, persistentTPMDef, Jirka