]> xenbits.xensource.com Git - libvirt.git/commitdiff
conf: Clear pointer to freed bitmap holding hostdev's 'origstates'
authorPeter Krempa <pkrempa@redhat.com>
Thu, 30 Mar 2023 09:42:31 +0000 (11:42 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Thu, 30 Mar 2023 13:17:08 +0000 (15:17 +0200)
'virDomainHostdevDefClear' must clear the pointers too as it can be
invoked multiple times on the same object e.g. inside
qemuDomainRemoveHostDevice once via virDomainHostdevDefFree which skips
freeing the object if it's used via <interface> and thus has a 'net'
definition corresponding to it, and then subsequently via
virDomainNetDefFree.

Fix it by clearing the pointer along with freeing it.

Fixes: d9e4075d4e9
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2182961
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/conf/domain_conf.c

index 9f49c6e62d6d92a0ea6cb160f961ec6ac9d0e9c3..08527964d116a2b868fdfed40c21c159379bb326 100644 (file)
@@ -3384,7 +3384,7 @@ void virDomainHostdevDefClear(virDomainHostdevDef *def)
             VIR_FREE(def->source.subsys.u.scsi_host.wwpn);
             break;
         case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI:
-            virBitmapFree(def->source.subsys.u.pci.origstates);
+            g_clear_pointer(&def->source.subsys.u.pci.origstates, virBitmapFree);
             break;
         case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_USB:
         case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV: