From 5accf461081229ed3cc9f4bc223cea1af9e3fc32 Mon Sep 17 00:00:00 2001 From: David Anderson Date: Wed, 3 Nov 2021 22:41:40 -0700 Subject: [PATCH] FROMLIST: overlayfs: inode_owner_or_capable called during execv Using old_creds as an indication that we are not overriding the credentials, bypass call to inode_owner_or_capable. This solves a problem with all execv calls being blocked when using the caller's credentials. Bug: 204981027 Link: https://lore.kernel.org/lkml/20211117015806.2192263-5-dvander@google.com Change-Id: Ifa966dabda7413873614d1da24629dc8054db131 Signed-off-by: David Anderson Signed-off-by: Mark Salyzyn --- fs/overlayfs/file.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/fs/overlayfs/file.c b/fs/overlayfs/file.c index d51e57e74ee3..34f8d7b3e4ff 100644 --- a/fs/overlayfs/file.c +++ b/fs/overlayfs/file.c @@ -56,7 +56,8 @@ static struct file *ovl_open_realfile(const struct file *file, if (err) { realfile = ERR_PTR(err); } else { - if (!inode_owner_or_capable(&init_user_ns, realinode)) + if (old_cred && !inode_owner_or_capable(&init_user_ns, + realinode)) flags &= ~O_NOATIME; realfile = open_with_fake_path(&file->f_path, flags, realinode,