diff options
Diffstat (limited to 'security/keys/keyctl.c')
| -rw-r--r-- | security/keys/keyctl.c | 11 | 
1 files changed, 6 insertions, 5 deletions
diff --git a/security/keys/keyctl.c b/security/keys/keyctl.c index a0d373f7681..65b38417c21 100644 --- a/security/keys/keyctl.c +++ b/security/keys/keyctl.c @@ -1475,7 +1475,8 @@ long keyctl_session_to_parent(void)  		goto error_keyring;  	newwork = &cred->rcu; -	cred->tgcred->session_keyring = key_ref_to_ptr(keyring_r); +	cred->session_keyring = key_ref_to_ptr(keyring_r); +	keyring_r = NULL;  	init_task_work(newwork, key_change_session_keyring);  	me = current; @@ -1500,7 +1501,7 @@ long keyctl_session_to_parent(void)  	mycred = current_cred();  	pcred = __task_cred(parent);  	if (mycred == pcred || -	    mycred->tgcred->session_keyring == pcred->tgcred->session_keyring) { +	    mycred->session_keyring == pcred->session_keyring) {  		ret = 0;  		goto unlock;  	} @@ -1516,9 +1517,9 @@ long keyctl_session_to_parent(void)  		goto unlock;  	/* the keyrings must have the same UID */ -	if ((pcred->tgcred->session_keyring && -	     pcred->tgcred->session_keyring->uid != mycred->euid) || -	    mycred->tgcred->session_keyring->uid != mycred->euid) +	if ((pcred->session_keyring && +	     pcred->session_keyring->uid != mycred->euid) || +	    mycred->session_keyring->uid != mycred->euid)  		goto unlock;  	/* cancel an already pending keyring replacement */  |