Merge tag 'mac80211-for-davem-2016-07-06' of git://git.kernel.org/pub/scm/linux/kerne...
[cascardo/linux.git] / fs / overlayfs / copy_up.c
index cc514da..80aa6f1 100644 (file)
@@ -336,7 +336,6 @@ int ovl_copy_up_one(struct dentry *parent, struct dentry *dentry,
        struct dentry *upperdir;
        struct dentry *upperdentry;
        const struct cred *old_cred;
-       struct cred *override_cred;
        char *link = NULL;
 
        if (WARN_ON(!workdir))
@@ -357,28 +356,7 @@ int ovl_copy_up_one(struct dentry *parent, struct dentry *dentry,
                        return PTR_ERR(link);
        }
 
-       err = -ENOMEM;
-       override_cred = prepare_creds();
-       if (!override_cred)
-               goto out_free_link;
-
-       override_cred->fsuid = stat->uid;
-       override_cred->fsgid = stat->gid;
-       /*
-        * CAP_SYS_ADMIN for copying up extended attributes
-        * CAP_DAC_OVERRIDE for create
-        * CAP_FOWNER for chmod, timestamp update
-        * CAP_FSETID for chmod
-        * CAP_CHOWN for chown
-        * CAP_MKNOD for mknod
-        */
-       cap_raise(override_cred->cap_effective, CAP_SYS_ADMIN);
-       cap_raise(override_cred->cap_effective, CAP_DAC_OVERRIDE);
-       cap_raise(override_cred->cap_effective, CAP_FOWNER);
-       cap_raise(override_cred->cap_effective, CAP_FSETID);
-       cap_raise(override_cred->cap_effective, CAP_CHOWN);
-       cap_raise(override_cred->cap_effective, CAP_MKNOD);
-       old_cred = override_creds(override_cred);
+       old_cred = ovl_override_creds(dentry->d_sb);
 
        err = -EIO;
        if (lock_rename(workdir, upperdir) != NULL) {
@@ -401,9 +379,7 @@ int ovl_copy_up_one(struct dentry *parent, struct dentry *dentry,
 out_unlock:
        unlock_rename(workdir, upperdir);
        revert_creds(old_cred);
-       put_cred(override_cred);
 
-out_free_link:
        if (link)
                free_page((unsigned long) link);