virSecuritySELinuxSetImageLabelInternal(virSecurityManagerPtr mgr,
virDomainDefPtr def,
virStorageSourcePtr src,
- bool first)
+ virStorageSourcePtr parent)
{
virSecuritySELinuxDataPtr data = virSecurityManagerGetPrivateData(mgr);
virSecurityLabelDefPtr secdef;
if (disk_seclabel && disk_seclabel->relabel && disk_seclabel->label) {
ret = virSecuritySELinuxSetFilecon(mgr, src->path, disk_seclabel->label);
- } else if (first) {
+ } else if (!parent || parent == src) {
if (src->shared) {
ret = virSecuritySELinuxSetFileconOptional(mgr,
src->path,
virDomainDefPtr def,
virStorageSourcePtr src)
{
- return virSecuritySELinuxSetImageLabelInternal(mgr, def, src, true);
+ return virSecuritySELinuxSetImageLabelInternal(mgr, def, src, NULL);
}
virDomainDiskDefPtr disk)
{
- bool first = true;
virStorageSourcePtr next;
for (next = disk->src; virStorageSourceIsBacking(next); next = next->backingStore) {
- if (virSecuritySELinuxSetImageLabelInternal(mgr, def, next, first) < 0)
+ if (virSecuritySELinuxSetImageLabelInternal(mgr, def, next, disk->src) < 0)
return -1;
-
- first = false;
}
return 0;