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

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
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -1524,7 +1524,8 @@ long keyctl_session_to_parent(void)

	ret = -EPERM;
	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 */
	if (parent->pid <= 1 || !parent->mm)
+1 −1
Original line number Diff line number Diff line
@@ -152,7 +152,7 @@ struct key *request_key_auth_new(struct key *target, const char *op,
				 struct key *dest_keyring)
{
	struct request_key_auth *rka, *irka;
	const struct cred *cred = current->cred;
	const struct cred *cred = current_cred();
	struct key *authkey = NULL;
	char desc[20];
	int ret = -ENOMEM;