diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2016-07-04 12:26:05 +0200 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2016-07-04 12:26:05 +0200 |
commit | 8658be133baa92c06b6d832a436d437deb2e2a22 (patch) | |
tree | 8f798f4aae5892533831487e4838a85b95414a0f /fs/overlayfs/dir.c | |
parent | 4030103b9b2e060512f8292bb62582adfd02ebe8 (diff) | |
parent | 5e385a6ef31fbbf2acbda770aecc2bc2ff933d17 (diff) | |
download | talos-op-linux-8658be133baa92c06b6d832a436d437deb2e2a22.tar.gz talos-op-linux-8658be133baa92c06b6d832a436d437deb2e2a22.zip |
Merge branch 'irq/for-block' into irq/core
Pull the irq affinity managing code which is in a seperate branch for block
developers to pull.
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); } |