diff options
author | Ingo Molnar <mingo@kernel.org> | 2016-07-08 18:27:47 +0300 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2016-07-08 18:27:47 +0300 |
commit | 9e7f7f5425e6d1492109a537ee88c99b29580655 (patch) | |
tree | 81f9d68abb5b793aadaf80bd6940af04e3c16eb9 /fs/overlayfs/dir.c | |
parent | 6daa2ec0b3e3808c55329d12de3c157cf38b17b0 (diff) | |
parent | f80fd3a5fff88a9ace7e8cd11d07cf874a63ea9f (diff) | |
download | linux-9e7f7f5425e6d1492109a537ee88c99b29580655.tar.xz |
Merge branch 'x86/mm' into x86/boot, to pick up dependencies
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'fs/overlayfs/dir.c')
-rw-r--r-- | fs/overlayfs/dir.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/fs/overlayfs/dir.c b/fs/overlayfs/dir.c index 22f0253a3567..c2a6b0894022 100644 --- a/fs/overlayfs/dir.c +++ b/fs/overlayfs/dir.c @@ -405,12 +405,21 @@ static int ovl_create_or_link(struct dentry *dentry, int mode, dev_t rdev, err = ovl_create_upper(dentry, inode, &stat, link, hardlink); } else { const struct cred *old_cred; + struct cred *override_cred; old_cred = ovl_override_creds(dentry->d_sb); - err = ovl_create_over_whiteout(dentry, inode, &stat, link, - hardlink); + err = -ENOMEM; + override_cred = prepare_creds(); + if (override_cred) { + override_cred->fsuid = old_cred->fsuid; + override_cred->fsgid = old_cred->fsgid; + put_cred(override_creds(override_cred)); + put_cred(override_cred); + err = ovl_create_over_whiteout(dentry, inode, &stat, + link, hardlink); + } revert_creds(old_cred); } |