diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 41142897a1..02c394f60e 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -19489,20 +19489,6 @@ virDomainDefGetSecurityLabelDef(virDomainDefPtr def, const char *model) return seclabel; } -virSecurityDeviceLabelDefPtr -virDomainDiskDefGetSecurityLabelDef(virDomainDiskDefPtr def, const char *model) -{ - size_t i; - - if (def == NULL) - return NULL; - - for (i = 0; i < def->src->nseclabels; i++) { - if (STREQ_NULLABLE(def->src->seclabels[i]->model, model)) - return def->src->seclabels[i]; - } - return NULL; -} virSecurityDeviceLabelDefPtr virDomainChrDefGetSecurityLabelDef(virDomainChrDefPtr def, const char *model) diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index a6ac95a2f8..6779a41ab4 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -2518,9 +2518,6 @@ virDomainObjGetState(virDomainObjPtr obj, int *reason) virSecurityLabelDefPtr virDomainDefGetSecurityLabelDef(virDomainDefPtr def, const char *model); -virSecurityDeviceLabelDefPtr -virDomainDiskDefGetSecurityLabelDef(virDomainDiskDefPtr def, const char *model); - virSecurityDeviceLabelDefPtr virDomainChrDefGetSecurityLabelDef(virDomainChrDefPtr def, const char *model); diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 46c0f029f5..9c1fc72f69 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -210,7 +210,6 @@ virDomainDiskCopyOnReadTypeToString; virDomainDiskDefAssignAddress; virDomainDiskDefForeachPath; virDomainDiskDefFree; -virDomainDiskDefGetSecurityLabelDef; virDomainDiskDefNew; virDomainDiskDeviceTypeToString; virDomainDiskDiscardTypeToString; @@ -1900,6 +1899,7 @@ virStorageSourceClear; virStorageSourceClearBackingStore; virStorageSourceFree; virStorageSourceGetActualType; +virStorageSourceGetSecurityLabelDef; virStorageSourceNewFromBacking; virStorageSourcePoolDefFree; virStorageSourcePoolModeTypeFromString; diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index e40c5ec18b..7c4fc67d50 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -2413,7 +2413,7 @@ qemuDomainGetImageIds(virQEMUDriverConfigPtr cfg, vmlabel->label) virParseOwnershipIds(vmlabel->label, uid, gid); - if ((disklabel = virDomainDiskDefGetSecurityLabelDef(disk, "dac")) && + if ((disklabel = virStorageSourceGetSecurityLabelDef(disk->src, "dac")) && disklabel->label) virParseOwnershipIds(disklabel->label, uid, gid); } diff --git a/src/security/security_dac.c b/src/security/security_dac.c index 9d5c25b81c..28f033dca8 100644 --- a/src/security/security_dac.c +++ b/src/security/security_dac.c @@ -302,7 +302,7 @@ virSecurityDACSetSecurityFileLabel(virDomainDiskDefPtr disk, uid_t user; gid_t group; - disk_seclabel = virDomainDiskDefGetSecurityLabelDef(disk, + disk_seclabel = virStorageSourceGetSecurityLabelDef(disk->src, SECURITY_DAC_NAME); if (disk_seclabel && disk_seclabel->norelabel) @@ -369,7 +369,7 @@ virSecurityDACRestoreSecurityImageLabelInt(virSecurityManagerPtr mgr, if (secdef && secdef->norelabel) return 0; - disk_seclabel = virDomainDiskDefGetSecurityLabelDef(disk, + disk_seclabel = virStorageSourceGetSecurityLabelDef(disk->src, SECURITY_DAC_NAME); if (disk_seclabel && disk_seclabel->norelabel) diff --git a/src/security/security_selinux.c b/src/security/security_selinux.c index 228e5cbe6a..0c34af8be9 100644 --- a/src/security/security_selinux.c +++ b/src/security/security_selinux.c @@ -1134,7 +1134,7 @@ virSecuritySELinuxRestoreSecurityImageLabelInt(virSecurityManagerPtr mgr, if (seclabel == NULL) return 0; - disk_seclabel = virDomainDiskDefGetSecurityLabelDef(disk, + disk_seclabel = virStorageSourceGetSecurityLabelDef(disk->src, SECURITY_SELINUX_NAME); if (seclabel->norelabel || (disk_seclabel && disk_seclabel->norelabel)) return 0; @@ -1202,7 +1202,7 @@ virSecuritySELinuxSetSecurityFileLabel(virDomainDiskDefPtr disk, virSecurityLabelDefPtr secdef = cbdata->secdef; virSecuritySELinuxDataPtr data = virSecurityManagerGetPrivateData(cbdata->manager); - disk_seclabel = virDomainDiskDefGetSecurityLabelDef(disk, + disk_seclabel = virStorageSourceGetSecurityLabelDef(disk->src, SECURITY_SELINUX_NAME); if (disk_seclabel && disk_seclabel->norelabel) diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c index a23ac6a48f..db2b4019c2 100644 --- a/src/util/virstoragefile.c +++ b/src/util/virstoragefile.c @@ -1496,6 +1496,21 @@ virStorageNetHostDefCopy(size_t nhosts, } +virSecurityDeviceLabelDefPtr +virStorageSourceGetSecurityLabelDef(virStorageSourcePtr src, + const char *model) +{ + size_t i; + + for (i = 0; i < src->nseclabels; i++) { + if (STREQ_NULLABLE(src->seclabels[i]->model, model)) + return src->seclabels[i]; + } + + return NULL; +} + + void virStorageSourcePoolDefFree(virStorageSourcePoolDefPtr def) { diff --git a/src/util/virstoragefile.h b/src/util/virstoragefile.h index 34b3625f02..35ac6182d9 100644 --- a/src/util/virstoragefile.h +++ b/src/util/virstoragefile.h @@ -312,6 +312,10 @@ int virStorageFileGetLVMKey(const char *path, int virStorageFileGetSCSIKey(const char *path, char **key); +virSecurityDeviceLabelDefPtr +virStorageSourceGetSecurityLabelDef(virStorageSourcePtr src, + const char *model); + void virStorageNetHostDefClear(virStorageNetHostDefPtr def); void virStorageNetHostDefFree(size_t nhosts, virStorageNetHostDefPtr hosts); virStorageNetHostDefPtr virStorageNetHostDefCopy(size_t nhosts,