]> xenbits.xensource.com Git - libvirt.git/commitdiff
security: Don't fail if locking a file on NFS mount fails
authorMichal Privoznik <mprivozn@redhat.com>
Thu, 20 Feb 2020 14:38:43 +0000 (15:38 +0100)
committerMichal Privoznik <mprivozn@redhat.com>
Tue, 25 Feb 2020 10:09:18 +0000 (11:09 +0100)
The way that our file locking works is that we open() the file we
want to lock and then use fcntl(fd, F_SETLKW, ...) to lock it.
The problem is, we are doing all of these as root which doesn't
work if the file lives on root squashed NFS, because if it does
then the open() fails. The way to resolve this is to make this a
non fatal error and leave callers deal with this (i.e. disable
remembering) - implemented in the previous commit.

https://bugzilla.redhat.com/show_bug.cgi?id=1804672

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
src/security/security_manager.c

index 1e998a6579952a3cc08f970d56b48bff0f9ee7e4..9f4bd7f8df2c262062560b9b251d4c3ac43d6384 100644 (file)
@@ -1345,6 +1345,11 @@ virSecurityManagerMetadataLock(virSecurityManagerPtr mgr G_GNUC_UNUSED,
             }
 #endif /* !WIN32 */
 
+            if (virFileIsSharedFS(p)) {
+                /* Probably a root squashed NFS. */
+                continue;
+            }
+
             virReportSystemError(errno,
                                  _("unable to open %s"),
                                  p);