ANDROID: overlayfs ovl_create_of_link regression
A comedy of errors caused a regression. Fixes a regression in commit 272fcd1ca7ceb252b1c3a2961110c7c1722707cf ("ANDROID: overlayfs: override_creds=off option bypass creator_cred") in combination with commitaab9adb4b8
("Merge 4.4.179 into android-4.4") that took in an incomplete backport of commit54a07fff4b
("ovl: fix uid/gid when creating over whiteout") (or upstream commit d0e13f5bbe4be7c8f27736fc40503dcec04b7de0 ("ovl: fix uid/gid when creating over whiteout")) which did not recognize that ovl_override_creds can return a NULL pointer. Signed-off-by: Mark Salyzyn <salyzyn@google.com> (cherry picked from https://lore.kernel.org/patchwork/patch/1009299) Bug: 109821005 Bug: 112955896 Bug: 127298877 Bug: 137541192 Change-Id: Ia6b71a653d1bf728db610e384864bd82d335b923
This commit is contained in:
parent
14e11966c8
commit
17bd9a7f78
1 changed files with 7 additions and 2 deletions
|
@ -415,8 +415,13 @@ static int ovl_create_or_link(struct dentry *dentry, int mode, dev_t rdev,
|
|||
err = -ENOMEM;
|
||||
override_cred = prepare_creds();
|
||||
if (override_cred) {
|
||||
override_cred->fsuid = old_cred->fsuid;
|
||||
override_cred->fsgid = old_cred->fsgid;
|
||||
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;
|
||||
put_cred(override_creds(override_cred));
|
||||
put_cred(override_cred);
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue