Whamcloud - gitweb
LU-14462 gss: fix support for namespace in lgss_keyring 16/41716/2
authorSebastien Buisson <sbuisson@ddn.com>
Mon, 22 Feb 2021 15:24:11 +0000 (00:24 +0900)
committerOleg Drokin <green@whamcloud.com>
Sat, 6 Mar 2021 02:35:50 +0000 (02:35 +0000)
Fix the way lgss_keyring handles different mount namespaces,
so that we do not try to bind to a namespace that does not exist.

Fixes: 94c44c62de ("LU-7845 gss: support namespace in lgss_keyring")
Signed-off-by: Sebastien Buisson <sbuisson@ddn.com>
Change-Id: Ia5a5213399decc683d5e9401b6594e7fe579123f
Reviewed-on: https://review.whamcloud.com/41716
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: John L. Hammond <jhammond@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
lustre/utils/gss/lgss_keyring.c

index 6748f7c..dfcb0ad 100644 (file)
@@ -1067,13 +1067,15 @@ int main(int argc, char *argv[])
 #ifdef HAVE_SETNS
        /* Is caller in different namespace? */
        snprintf(path, sizeof(path), "/proc/%d/ns/mnt", getpid());
 #ifdef HAVE_SETNS
        /* Is caller in different namespace? */
        snprintf(path, sizeof(path), "/proc/%d/ns/mnt", getpid());
-       if (stat(path, &parent_ns))
-               logmsg(LL_ERR, "cannot stat %s: %s\n", path, strerror(errno));
-       snprintf(path, sizeof(path), "/proc/%d/ns/mnt", uparam.kup_pid);
-       if (stat(path, &caller_ns))
-               logmsg(LL_ERR, "cannot stat %s: %s\n", path, strerror(errno));
-       if (caller_ns.st_ino != parent_ns.st_ino) {
-               other_ns = 1;
+       if (stat(path, &parent_ns)) {
+               logmsg(LL_DEBUG, "cannot stat %s: %s\n", path, strerror(errno));
+       } else {
+               snprintf(path, sizeof(path), "/proc/%d/ns/mnt", uparam.kup_pid);
+               if (stat(path, &caller_ns))
+                       logmsg(LL_DEBUG, "cannot stat %s: %s\n",
+                              path, strerror(errno));
+               else if (caller_ns.st_ino != parent_ns.st_ino)
+                       other_ns = 1;
        }
 #endif /* HAVE_SETNS */
 
        }
 #endif /* HAVE_SETNS */