diff --git a/src/security/security_selinux.c b/src/security/security_selinux.c index a37f8c140b..d4bfee76c5 100644 --- a/src/security/security_selinux.c +++ b/src/security/security_selinux.c @@ -2505,6 +2505,21 @@ virSecuritySELinuxGetSecurityMountOptions(virSecurityManagerPtr mgr, return opts; } +static char * +virSecuritySELinuxDomainSetDirLabel(virSecurityManagerPtr mgr, + virDomainDefPtr def, + const char *path) +{ + virSecurityLabelDefPtr seclabel; + int ret = -1; + + seclabel = virDomainDefGetSecurityLabelDef(def, SECURITY_SELINUX_NAME); + if (!seclabel || !seclabel->relabel) + return 0; + + return virSecuritySELinuxSetFilecon(path, seclabel->imagelabel); +} + virSecurityDriver virSecurityDriverSELinux = { .privateDataLen = sizeof(virSecuritySELinuxData), .name = SECURITY_SELINUX_NAME, @@ -2549,4 +2564,6 @@ virSecurityDriver virSecurityDriverSELinux = { .domainGetSecurityMountOptions = virSecuritySELinuxGetSecurityMountOptions, .getBaseLabel = virSecuritySELinuxGetBaseLabel, + + .domainSetDirLabel = virSecuritySELinuxDomainSetDirLabel, };