fbe740
From 4f9e2b4b36fda208d25acf4126abbf4fee37f0b5 Mon Sep 17 00:00:00 2001
fbe740
Message-Id: <4f9e2b4b36fda208d25acf4126abbf4fee37f0b5@dist-git>
fbe740
From: Michal Privoznik <mprivozn@redhat.com>
fbe740
Date: Tue, 25 Feb 2020 11:24:52 +0100
fbe740
Subject: [PATCH] security: Don't fail if locking a file on NFS mount fails
fbe740
fbe740
The way that our file locking works is that we open() the file we
fbe740
want to lock and then use fcntl(fd, F_SETLKW, ...) to lock it.
fbe740
The problem is, we are doing all of these as root which doesn't
fbe740
work if the file lives on root squashed NFS, because if it does
fbe740
then the open() fails. The way to resolve this is to make this a
fbe740
non fatal error and leave callers deal with this (i.e. disable
fbe740
remembering) - implemented in the previous commit.
fbe740
fbe740
https://bugzilla.redhat.com/show_bug.cgi?id=1804672
fbe740
fbe740
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
fbe740
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
fbe740
(cherry picked from commit f16663d58f7aab6bf800fcffd34f83f522927897)
fbe740
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
fbe740
Message-Id: <d3cb3d3214cf3e67bd357fa9781ce55f8dc8c751.1582626185.git.mprivozn@redhat.com>
fbe740
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
fbe740
---
fbe740
 src/security/security_manager.c | 5 +++++
fbe740
 1 file changed, 5 insertions(+)
fbe740
fbe740
diff --git a/src/security/security_manager.c b/src/security/security_manager.c
fbe740
index 9d06316a99..23ed6a127c 100644
fbe740
--- a/src/security/security_manager.c
fbe740
+++ b/src/security/security_manager.c
fbe740
@@ -1343,6 +1343,11 @@ virSecurityManagerMetadataLock(virSecurityManagerPtr mgr G_GNUC_UNUSED,
fbe740
                 continue;
fbe740
             }
fbe740
 
fbe740
+            if (virFileIsSharedFS(p)) {
fbe740
+                /* Probably a root squashed NFS. */
fbe740
+                continue;
fbe740
+            }
fbe740
+
fbe740
             virReportSystemError(errno,
fbe740
                                  _("unable to open %s"),
fbe740
                                  p);
fbe740
-- 
fbe740
2.25.1
fbe740