• David Howells's avatar
    keys: Fix request_key() cache · 8379bb84
    David Howells authored
    When the key cached by request_key() and co.  is cleaned up on exit(),
    the code looks in the wrong task_struct, and so clears the wrong cache.
    This leads to anomalies in key refcounting when doing, say, a kernel
    build on an afs volume, that then trigger kasan to report a
    use-after-free when the key is viewed in /proc/keys.
    
    Fix this by making exit_creds() look in the passed-in task_struct rather
    than in current (the task_struct cleanup code is deferred by RCU and
    potentially run in another task).
    
    Fixes: 7743c48e ("keys: Cache result of request_key*() temporarily in task_struct")
    Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    8379bb84
cred.c 23.3 KB