if (!pci)
goto done;
- ret = virPCIDeviceFileIterate(pci, AppArmorSetSecurityPCILabel, ptr);
+ if (dev->source.subsys.u.pci.backend
+ == VIR_DOMAIN_HOSTDEV_PCI_BACKEND_TYPE_VFIO) {
+ char *vfioGroupDev = virPCIDeviceGetVFIOGroupDev(pci);
+
+ if (!vfioGroupDev)
+ goto done;
+ ret = AppArmorSetSecurityPCILabel(pci, vfioGroupDev, ptr);
+ VIR_FREE(vfioGroupDev);
+ } else {
+ ret = virPCIDeviceFileIterate(pci, AppArmorSetSecurityPCILabel, ptr);
+ }
virPCIDeviceFree(pci);
break;
}
if (!pci)
goto done;
- ret = virPCIDeviceFileIterate(pci, virSecurityDACSetSecurityPCILabel,
- params);
+ if (dev->source.subsys.u.pci.backend
+ == VIR_DOMAIN_HOSTDEV_PCI_BACKEND_TYPE_VFIO) {
+ char *vfioGroupDev = virPCIDeviceGetVFIOGroupDev(pci);
+
+ if (!vfioGroupDev)
+ goto done;
+ ret = virSecurityDACSetSecurityPCILabel(pci, vfioGroupDev, params);
+ VIR_FREE(vfioGroupDev);
+ } else {
+ ret = virPCIDeviceFileIterate(pci, virSecurityDACSetSecurityPCILabel,
+ params);
+ }
+
virPCIDeviceFree(pci);
break;
if (!pci)
goto done;
- ret = virPCIDeviceFileIterate(pci, virSecurityDACRestoreSecurityPCILabel, mgr);
+ if (dev->source.subsys.u.pci.backend
+ == VIR_DOMAIN_HOSTDEV_PCI_BACKEND_TYPE_VFIO) {
+ char *vfioGroupDev = virPCIDeviceGetVFIOGroupDev(pci);
+
+ if (!vfioGroupDev)
+ goto done;
+ ret = virSecurityDACRestoreSecurityPCILabel(pci, vfioGroupDev, mgr);
+ VIR_FREE(vfioGroupDev);
+ } else {
+ ret = virPCIDeviceFileIterate(pci, virSecurityDACRestoreSecurityPCILabel, mgr);
+ }
virPCIDeviceFree(pci);
break;
if (!pci)
goto done;
- ret = virPCIDeviceFileIterate(pci, virSecuritySELinuxSetSecurityPCILabel, def);
+ if (dev->source.subsys.u.pci.backend
+ == VIR_DOMAIN_HOSTDEV_PCI_BACKEND_TYPE_VFIO) {
+ char *vfioGroupDev = virPCIDeviceGetVFIOGroupDev(pci);
+
+ if (!vfioGroupDev)
+ goto done;
+ ret = virSecuritySELinuxSetSecurityPCILabel(pci, vfioGroupDev, def);
+ VIR_FREE(vfioGroupDev);
+ } else {
+ ret = virPCIDeviceFileIterate(pci, virSecuritySELinuxSetSecurityPCILabel, def);
+ }
virPCIDeviceFree(pci);
break;
if (!pci)
goto done;
- ret = virPCIDeviceFileIterate(pci, virSecuritySELinuxRestoreSecurityPCILabel, mgr);
+ if (dev->source.subsys.u.pci.backend
+ == VIR_DOMAIN_HOSTDEV_PCI_BACKEND_TYPE_VFIO) {
+ char *vfioGroupDev = virPCIDeviceGetVFIOGroupDev(pci);
+
+ if (!vfioGroupDev)
+ goto done;
+ ret = virSecuritySELinuxRestoreSecurityPCILabel(pci, vfioGroupDev, mgr);
+ VIR_FREE(vfioGroupDev);
+ } else {
+ ret = virPCIDeviceFileIterate(pci, virSecuritySELinuxRestoreSecurityPCILabel, mgr);
+ }
virPCIDeviceFree(pci);
break;