From 6c3fdaa6b505c960767dc6df2a66dd3fa0baf884 Mon Sep 17 00:00:00 2001 From: Amit Pundir Date: Mon, 15 Jan 2024 14:37:20 +0530 Subject: Revert "ANDROID: overlayfs: override_creds=off option bypass creator_cred" This reverts commit fc6f370400e94a947610fa9d1c49401a52e072a8. --- fs/overlayfs/dir.c | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) (limited to 'fs/overlayfs/dir.c') 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 -- cgit v1.2.3