Skip to content

Commit 51f8f3c

Browse files
koct9iMiklos Szeredi
authored andcommitted
ovl: drop CAP_SYS_RESOURCE from saved mounter's credentials
If overlay was mounted by root then quota set for upper layer does not work because overlay now always use mounter's credentials for operations. Also overlay might deplete reserved space and inodes in ext4. This patch drops capability SYS_RESOURCE from saved credentials. This affects creation new files, whiteouts, and copy-up operations. Signed-off-by: Konstantin Khlebnikov <[email protected]> Fixes: 1175b6b ("ovl: do operations on underlying file system in mounter's context") Cc: Vivek Goyal <[email protected]> Signed-off-by: Miklos Szeredi <[email protected]>
1 parent e593b2b commit 51f8f3c

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

fs/overlayfs/super.c

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -721,6 +721,7 @@ static int ovl_fill_super(struct super_block *sb, void *data, int silent)
721721
unsigned int stacklen = 0;
722722
unsigned int i;
723723
bool remote = false;
724+
struct cred *cred;
724725
int err;
725726

726727
err = -ENOMEM;
@@ -901,10 +902,13 @@ static int ovl_fill_super(struct super_block *sb, void *data, int silent)
901902
else
902903
sb->s_d_op = &ovl_dentry_operations;
903904

904-
ufs->creator_cred = prepare_creds();
905-
if (!ufs->creator_cred)
905+
ufs->creator_cred = cred = prepare_creds();
906+
if (!cred)
906907
goto out_put_lower_mnt;
907908

909+
/* Never override disk quota limits or use reserved space */
910+
cap_lower(cred->cap_effective, CAP_SYS_RESOURCE);
911+
908912
err = -ENOMEM;
909913
oe = ovl_alloc_entry(numlower);
910914
if (!oe)

0 commit comments

Comments
 (0)