diff --git a/fs/overlayfs/dir.c b/fs/overlayfs/dir.c index d7d880f9495b..4cc40de38dff 100644 --- a/fs/overlayfs/dir.c +++ b/fs/overlayfs/dir.c @@ -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);