summaryrefslogtreecommitdiff
path: root/fs/overlayfs/dir.c
diff options
context:
space:
mode:
authorAmit Pundir <amit.pundir@linaro.org>2024-01-15 14:37:20 +0530
committerAmit Pundir <amit.pundir@linaro.org>2024-01-22 11:45:08 +0530
commit6c3fdaa6b505c960767dc6df2a66dd3fa0baf884 (patch)
tree420a4ca55a68577aa97a243e1a2993f0f30708c7 /fs/overlayfs/dir.c
parentd88aa862799a7cc8555338217f0f2ecfd0a89040 (diff)
Revert "ANDROID: overlayfs: override_creds=off option bypass creator_cred"rbX-6.8-rc1
This reverts commit fc6f370400e94a947610fa9d1c49401a52e072a8.
Diffstat (limited to 'fs/overlayfs/dir.c')
-rw-r--r--fs/overlayfs/dir.c17
1 files changed, 7 insertions, 10 deletions
diff --git a/fs/overlayfs/dir.c b/fs/overlayfs/dir.c
index 9c2e8538f1ab..0f8b4a719237 100644
--- a/fs/overlayfs/dir.c
+++ b/fs/overlayfs/dir.c
@@ -555,7 +555,7 @@ static int ovl_create_or_link(struct dentry *dentry, struct inode *inode,
struct ovl_cattr *attr, bool origin)
{
int err;
- const struct cred *old_cred, *hold_cred = NULL;
+ const struct cred *old_cred;
struct cred *override_cred;
struct dentry *parent = dentry->d_parent;
@@ -592,14 +592,13 @@ static int ovl_create_or_link(struct dentry *dentry, struct inode *inode,
override_cred->fsuid = inode->i_uid;
override_cred->fsgid = inode->i_gid;
err = security_dentry_create_files_as(dentry,
- attr->mode, &dentry->d_name,
- old_cred ? old_cred : current_cred(),
+ attr->mode, &dentry->d_name, old_cred,
override_cred);
if (err) {
put_cred(override_cred);
goto out_revert_creds;
}
- hold_cred = override_creds(override_cred);
+ put_cred(override_creds(override_cred));
put_cred(override_cred);
}
@@ -609,9 +608,7 @@ static int ovl_create_or_link(struct dentry *dentry, struct inode *inode,
err = ovl_create_over_whiteout(dentry, inode, attr);
out_revert_creds:
- ovl_revert_creds(dentry->d_sb, old_cred ?: hold_cred);
- if (old_cred && hold_cred)
- put_cred(hold_cred);
+ revert_creds(old_cred);
return err;
}
@@ -692,7 +689,7 @@ static int ovl_set_link_redirect(struct dentry *dentry)
old_cred = ovl_override_creds(dentry->d_sb);
err = ovl_set_redirect(dentry, false);
- ovl_revert_creds(dentry->d_sb, old_cred);
+ revert_creds(old_cred);
return err;
}
@@ -902,7 +899,7 @@ static int ovl_do_remove(struct dentry *dentry, bool is_dir)
err = ovl_remove_upper(dentry, is_dir, &list);
else
err = ovl_remove_and_whiteout(dentry, &list);
- ovl_revert_creds(dentry->d_sb, old_cred);
+ revert_creds(old_cred);
if (!err) {
if (is_dir)
clear_nlink(dentry->d_inode);
@@ -1282,7 +1279,7 @@ out_dput_old:
out_unlock:
unlock_rename(new_upperdir, old_upperdir);
out_revert_creds:
- ovl_revert_creds(old->d_sb, old_cred);
+ revert_creds(old_cred);
if (update_nlink)
ovl_nlink_end(new);
else