diff options
| author | Mark Salyzyn <salyzyn@google.com> | 2019-09-16 14:19:27 +0000 |
|---|---|---|
| committer | Mark Salyzyn <salyzyn@google.com> | 2019-09-16 15:32:53 +0000 |
| commit | aa6ba1d906be3b47f5854ee3c4a7d3c8dd4f1e5e (patch) | |
| tree | 290ca80a1623bf358a427bd3171442662b693bc3 | |
| parent | 83f541302cae9c20bf3d64dfca4e093e61bb2aa4 (diff) | |
Revert "ANDROID: regression introduced override_creds=off"
This reverts commit 72c5343cdbc5ec257e45d5387ed7220065c2ecff.
Reason for revert: android-4.4 is for 'q' security updates, it is not dead.
Signed-off-by: Mark Salyzyn <salyzyn@google.com>
Bug: 140816499
Change-Id: Ia99c0b420db306631e669428bb71eb8a2493ddc1
| -rw-r--r-- | fs/overlayfs/dir.c | 17 |
1 files changed, 5 insertions, 12 deletions
diff --git a/fs/overlayfs/dir.c b/fs/overlayfs/dir.c index b4498b95234c..eedacae889b9 100644 --- a/fs/overlayfs/dir.c +++ b/fs/overlayfs/dir.c @@ -407,7 +407,7 @@ static int ovl_create_or_link(struct dentry *dentry, int mode, dev_t rdev, if (!ovl_dentry_is_opaque(dentry)) { err = ovl_create_upper(dentry, inode, &stat, link, hardlink); } else { - const struct cred *old_cred, *hold_cred = NULL; + const struct cred *old_cred; struct cred *override_cred; old_cred = ovl_override_creds(dentry->d_sb); @@ -415,22 +415,15 @@ static int ovl_create_or_link(struct dentry *dentry, int mode, dev_t rdev, err = -ENOMEM; override_cred = prepare_creds(); if (override_cred) { - const struct cred *our_cred; - - our_cred = old_cred; - if (!our_cred) - our_cred = current_cred(); - override_cred->fsuid = our_cred->fsuid; - override_cred->fsgid = our_cred->fsgid; - hold_cred = override_creds(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); } - ovl_revert_creds(old_cred ?: hold_cred); - if (old_cred && hold_cred) - put_cred(hold_cred); + revert_creds(old_cred); } if (!err) |
