• David Howells's avatar
    [PATCH] Error during attempt to join key management session can leave semaphore pinned · bcf945d3
    David Howells authored
    The attached patch prevents an error during the key session joining operation
    from hanging future joins in the D state [CAN-2005-2098].
    
    The problem is that the error handling path for the KEYCTL_JOIN_SESSION_KEYRING
    operation has one error path that doesn't release the session management
    semaphore. Further attempts to get the semaphore will then sleep for ever in
    the D state.
    
    This can happen in four situations, all involving an attempt to allocate a new
    session keyring:
    
     (1) ENOMEM.
    
     (2) The users key quota being reached.
    
     (3) A keyring name that is an empty string.
    
     (4) A keyring name that is too long.
    
    Any user may attempt this operation, and so any user can cause the problem to
    occur.
    Signed-Off-By: default avatarDavid Howells <dhowells@redhat.com>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    bcf945d3
process_keys.c 16 KB