Commit 7936d16d authored by David Howells's avatar David Howells

keys: sparse: Fix incorrect RCU accesses

Fix a pair of accesses that should be using RCU protection.

rcu_dereference_protected() is needed to access task_struct::real_parent.

current_cred() should be used to access current->cred.
Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
Reviewed-by: default avatarJames Morris <jamorris@linux.microsoft.com>
parent 2e21865f
...@@ -1524,7 +1524,8 @@ long keyctl_session_to_parent(void) ...@@ -1524,7 +1524,8 @@ long keyctl_session_to_parent(void)
ret = -EPERM; ret = -EPERM;
oldwork = NULL; oldwork = NULL;
parent = me->real_parent; parent = rcu_dereference_protected(me->real_parent,
lockdep_is_held(&tasklist_lock));
/* the parent mustn't be init and mustn't be a kernel thread */ /* the parent mustn't be init and mustn't be a kernel thread */
if (parent->pid <= 1 || !parent->mm) if (parent->pid <= 1 || !parent->mm)
......
...@@ -152,7 +152,7 @@ struct key *request_key_auth_new(struct key *target, const char *op, ...@@ -152,7 +152,7 @@ struct key *request_key_auth_new(struct key *target, const char *op,
struct key *dest_keyring) struct key *dest_keyring)
{ {
struct request_key_auth *rka, *irka; struct request_key_auth *rka, *irka;
const struct cred *cred = current->cred; const struct cred *cred = current_cred();
struct key *authkey = NULL; struct key *authkey = NULL;
char desc[20]; char desc[20];
int ret = -ENOMEM; int ret = -ENOMEM;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment