Skip to content

Commit ec7ba11

Browse files
author
Miklos Szeredi
committed
Revert "ovl: relax permission checking on underlying layers"
This reverts commit 007ea44. The commit broke some selinux-testsuite cases, and it looks like there's no straightforward fix keeping the direction of this patch, so revert for now. The original patch was trying to fix the consistency of permission checks, and not an observed bug. So reverting should be safe. Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
1 parent 155b8a0 commit ec7ba11

File tree

1 file changed

+4
-13
lines changed

1 file changed

+4
-13
lines changed

fs/overlayfs/inode.c

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -286,22 +286,13 @@ int ovl_permission(struct inode *inode, int mask)
286286
if (err)
287287
return err;
288288

289-
/* No need to do any access on underlying for special files */
290-
if (special_file(realinode->i_mode))
291-
return 0;
292-
293-
/* No need to access underlying for execute */
294-
mask &= ~MAY_EXEC;
295-
if ((mask & (MAY_READ | MAY_WRITE)) == 0)
296-
return 0;
297-
298-
/* Lower files get copied up, so turn write access into read */
299-
if (!upperinode && mask & MAY_WRITE) {
289+
old_cred = ovl_override_creds(inode->i_sb);
290+
if (!upperinode &&
291+
!special_file(realinode->i_mode) && mask & MAY_WRITE) {
300292
mask &= ~(MAY_WRITE | MAY_APPEND);
293+
/* Make sure mounter can read file for copy up later */
301294
mask |= MAY_READ;
302295
}
303-
304-
old_cred = ovl_override_creds(inode->i_sb);
305296
err = inode_permission(realinode, mask);
306297
revert_creds(old_cred);
307298

0 commit comments

Comments
 (0)