517157 fix selinux problem with images on NFS
authorDarryl L. Pierce <dpierce@redhat.com>
Fri, 21 Aug 2009 14:57:29 +0000 (16:57 +0200)
committerDaniel Veillard <veillard@redhat.com>
Fri, 21 Aug 2009 14:57:29 +0000 (16:57 +0200)
* src/security_selinux.c: ignores EOPNOTSUPP when attempting to access an
  NFS share

src/security_selinux.c

index 0db9f49..3b2e88f 100644 (file)
@@ -323,6 +323,8 @@ SELinuxSetFilecon(virConnectPtr conn, const char *path, char *tcon)
     VIR_INFO("Setting SELinux context on '%s' to '%s'", path, tcon);
 
     if (setfilecon(path, tcon) < 0) {
+        int setfilecon_errno = errno;
+
         if (getfilecon(path, &econ) >= 0) {
             if (STREQ(tcon, econ)) {
                 freecon(econ);
@@ -331,14 +333,21 @@ SELinuxSetFilecon(virConnectPtr conn, const char *path, char *tcon)
             }
             freecon(econ);
         }
-        virSecurityReportError(conn, VIR_ERR_ERROR,
-                               _("%s: unable to set security context "
-                                 "'\%s\' on %s: %s."), __func__,
-                               tcon,
-                               path,
-                               virStrerror(errno, ebuf, sizeof ebuf));
-        if (security_getenforce() == 1)
-            return -1;
+
+        /* if the error complaint is related to an image hosted on
+         * an nfs mount, then ignore it.
+         * rhbz 517157
+         */
+        if (setfilecon_errno != EOPNOTSUPP) {
+            virSecurityReportError(conn, VIR_ERR_ERROR,
+                                 _("%s: unable to set security context "
+                                   "'\%s\' on %s: %s."), __func__,
+                                 tcon,
+                                 path,
+                                 virStrerror(errno, ebuf, sizeof ebuf));
+            if (security_getenforce() == 1)
+                return -1;
+        }
     }
     return 0;
 }