diff options
author | Marc Dionne <marc.c.dionne@gmail.com> | 2009-09-14 13:46:23 +0200 |
---|---|---|
committer | James Morris <jmorris@namei.org> | 2009-09-15 01:10:59 +0200 |
commit | 5c84342a3e147a23752276650340801c237d0e56 (patch) | |
tree | a57a81dd9b48f8bd837ab13e319375c248cc7b89 /security/keys/keyctl.c | |
parent | CRED: Allow put_cred() to cope with a NULL groups list (diff) | |
download | linux-5c84342a3e147a23752276650340801c237d0e56.tar.xz linux-5c84342a3e147a23752276650340801c237d0e56.zip |
KEYS: Unlock tasklist when exiting early from keyctl_session_to_parent
When we exit early from keyctl_session_to_parent because of permissions or
because the session keyring is the same as the parent, we need to unlock the
tasklist.
The missing unlock causes the system to hang completely when using
keyctl(KEYCTL_SESSION_TO_PARENT) with a keyring shared with the parent.
Signed-off-by: Marc Dionne <marc.c.dionne@gmail.com>
Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: James Morris <jmorris@namei.org>
Diffstat (limited to 'security/keys/keyctl.c')
-rw-r--r-- | security/keys/keyctl.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/security/keys/keyctl.c b/security/keys/keyctl.c index 74c968524592..60983f38852e 100644 --- a/security/keys/keyctl.c +++ b/security/keys/keyctl.c @@ -1319,6 +1319,7 @@ long keyctl_session_to_parent(void) already_same: ret = 0; not_permitted: + write_unlock_irq(&tasklist_lock); put_cred(cred); return ret; |