diff --git a/src/security/security_apparmor.c b/src/security/security_apparmor.c index 4fa0384c4e..5be5ff02d9 100644 --- a/src/security/security_apparmor.c +++ b/src/security/security_apparmor.c @@ -835,8 +835,10 @@ AppArmorSetSecurityHostdevLabel(virSecurityManagerPtr mgr, == VIR_DOMAIN_HOSTDEV_PCI_BACKEND_VFIO) { char *vfioGroupDev = virPCIDeviceGetVFIOGroupDev(pci); - if (!vfioGroupDev) + if (!vfioGroupDev) { + virPCIDeviceFree(pci); goto done; + } ret = AppArmorSetSecurityPCILabel(pci, vfioGroupDev, ptr); VIR_FREE(vfioGroupDev); } else { diff --git a/src/security/security_dac.c b/src/security/security_dac.c index 0366c1723b..e197eff42e 100644 --- a/src/security/security_dac.c +++ b/src/security/security_dac.c @@ -520,8 +520,10 @@ virSecurityDACSetSecurityHostdevLabel(virSecurityManagerPtr mgr, == VIR_DOMAIN_HOSTDEV_PCI_BACKEND_VFIO) { char *vfioGroupDev = virPCIDeviceGetVFIOGroupDev(pci); - if (!vfioGroupDev) + if (!vfioGroupDev) { + virPCIDeviceFree(pci); goto done; + } ret = virSecurityDACSetSecurityPCILabel(pci, vfioGroupDev, params); VIR_FREE(vfioGroupDev); } else { @@ -530,7 +532,6 @@ virSecurityDACSetSecurityHostdevLabel(virSecurityManagerPtr mgr, } virPCIDeviceFree(pci); - break; } @@ -611,15 +612,16 @@ virSecurityDACRestoreSecurityHostdevLabel(virSecurityManagerPtr mgr, == VIR_DOMAIN_HOSTDEV_PCI_BACKEND_VFIO) { char *vfioGroupDev = virPCIDeviceGetVFIOGroupDev(pci); - if (!vfioGroupDev) + if (!vfioGroupDev) { + virPCIDeviceFree(pci); goto done; + } ret = virSecurityDACRestoreSecurityPCILabel(pci, vfioGroupDev, mgr); VIR_FREE(vfioGroupDev); } else { ret = virPCIDeviceFileIterate(pci, virSecurityDACRestoreSecurityPCILabel, mgr); } virPCIDeviceFree(pci); - break; } diff --git a/src/security/security_selinux.c b/src/security/security_selinux.c index 87a09c7b14..0cf4009358 100644 --- a/src/security/security_selinux.c +++ b/src/security/security_selinux.c @@ -1346,15 +1346,16 @@ virSecuritySELinuxSetSecurityHostdevSubsysLabel(virDomainDefPtr def, == VIR_DOMAIN_HOSTDEV_PCI_BACKEND_VFIO) { char *vfioGroupDev = virPCIDeviceGetVFIOGroupDev(pci); - if (!vfioGroupDev) + if (!vfioGroupDev) { + virPCIDeviceFree(pci); goto done; + } ret = virSecuritySELinuxSetSecurityPCILabel(pci, vfioGroupDev, def); VIR_FREE(vfioGroupDev); } else { ret = virPCIDeviceFileIterate(pci, virSecuritySELinuxSetSecurityPCILabel, def); } virPCIDeviceFree(pci); - break; } @@ -1518,15 +1519,16 @@ virSecuritySELinuxRestoreSecurityHostdevSubsysLabel(virSecurityManagerPtr mgr, == VIR_DOMAIN_HOSTDEV_PCI_BACKEND_VFIO) { char *vfioGroupDev = virPCIDeviceGetVFIOGroupDev(pci); - if (!vfioGroupDev) + if (!vfioGroupDev) { + virPCIDeviceFree(pci); goto done; + } ret = virSecuritySELinuxRestoreSecurityPCILabel(pci, vfioGroupDev, mgr); VIR_FREE(vfioGroupDev); } else { ret = virPCIDeviceFileIterate(pci, virSecuritySELinuxRestoreSecurityPCILabel, mgr); } virPCIDeviceFree(pci); - break; }