diff options
Diffstat (limited to 'fs')
-rw-r--r-- | fs/overlayfs/super.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/fs/overlayfs/super.c b/fs/overlayfs/super.c index 346f668e7df0..7b2188181367 100644 --- a/fs/overlayfs/super.c +++ b/fs/overlayfs/super.c | |||
@@ -721,6 +721,7 @@ static int ovl_fill_super(struct super_block *sb, void *data, int silent) | |||
721 | unsigned int stacklen = 0; | 721 | unsigned int stacklen = 0; |
722 | unsigned int i; | 722 | unsigned int i; |
723 | bool remote = false; | 723 | bool remote = false; |
724 | struct cred *cred; | ||
724 | int err; | 725 | int err; |
725 | 726 | ||
726 | err = -ENOMEM; | 727 | err = -ENOMEM; |
@@ -901,10 +902,13 @@ static int ovl_fill_super(struct super_block *sb, void *data, int silent) | |||
901 | else | 902 | else |
902 | sb->s_d_op = &ovl_dentry_operations; | 903 | sb->s_d_op = &ovl_dentry_operations; |
903 | 904 | ||
904 | ufs->creator_cred = prepare_creds(); | 905 | ufs->creator_cred = cred = prepare_creds(); |
905 | if (!ufs->creator_cred) | 906 | if (!cred) |
906 | goto out_put_lower_mnt; | 907 | goto out_put_lower_mnt; |
907 | 908 | ||
909 | /* Never override disk quota limits or use reserved space */ | ||
910 | cap_lower(cred->cap_effective, CAP_SYS_RESOURCE); | ||
911 | |||
908 | err = -ENOMEM; | 912 | err = -ENOMEM; |
909 | oe = ovl_alloc_entry(numlower); | 913 | oe = ovl_alloc_entry(numlower); |
910 | if (!oe) | 914 | if (!oe) |