lkml.org 
[lkml]   [2018]   [Apr]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL for 4.4 011/162] KEYS: put keyring if install_session_keyring_to_cred() fails
    Date
    From: Eric Biggers <ebiggers@google.com>

    [ Upstream commit d636bd9f12a66ea3775c9fabbf3f8e118253467a ]

    In join_session_keyring(), if install_session_keyring_to_cred() were to
    fail, we would leak the keyring reference, just like in the bug fixed by
    commit 23567fd052a9 ("KEYS: Fix keyring ref leak in
    join_session_keyring()"). Fortunately this cannot happen currently, but
    we really should be more careful. Do this by adding and using a new
    error label at which the keyring reference is dropped.

    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: James Morris <james.l.morris@oracle.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    ---
    security/keys/process_keys.c | 7 ++++---
    1 file changed, 4 insertions(+), 3 deletions(-)

    diff --git a/security/keys/process_keys.c b/security/keys/process_keys.c
    index ac1d5b2b1626..a7095372701e 100644
    --- a/security/keys/process_keys.c
    +++ b/security/keys/process_keys.c
    @@ -808,15 +808,14 @@ long join_session_keyring(const char *name)
    ret = PTR_ERR(keyring);
    goto error2;
    } else if (keyring == new->session_keyring) {
    - key_put(keyring);
    ret = 0;
    - goto error2;
    + goto error3;
    }

    /* we've got a keyring - now to install it */
    ret = install_session_keyring_to_cred(new, keyring);
    if (ret < 0)
    - goto error2;
    + goto error3;

    commit_creds(new);
    mutex_unlock(&key_session_mutex);
    @@ -826,6 +825,8 @@ long join_session_keyring(const char *name)
    okay:
    return ret;

    +error3:
    + key_put(keyring);
    error2:
    mutex_unlock(&key_session_mutex);
    error:
    --
    2.15.1
    \
     
     \ /
      Last update: 2018-04-09 03:39    [W:4.037 / U:0.404 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site