On 12/10/24 10:50 AM, Jiri Denemark wrote:
> 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(a)redhat.com>
>> ---
>> 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
Hopefully I cannot be NULL from 'persistentTPMDef =
persistentDef->tpms[i]' otherwise ntpms would be wrong?!
But persistentTPMDef is only set if persistentDef->ntpms == def->ntpms.
So persistentTPMDef will still be NULL here if the number of tpms does
not match.
Jirka