• Kuniyuki Iwashima's avatar
    af_unix: Don't use spin_lock_nested() in copy_peercred(). · 22e5751b
    Kuniyuki Iwashima authored
    When (AF_UNIX, SOCK_STREAM) socket connect()s to a listening socket,
    the listener's sk_peer_pid/sk_peer_cred are copied to the client in
    copy_peercred().
    
    Then, two sk_peer_locks are held there; one is client's and another
    is listener's.
    
    However, the latter is not needed because we hold the listner's
    unix_state_lock() there and unix_listen() cannot update the cred
    concurrently.
    
    Let's drop the unnecessary spin_lock() and use the bare spin_lock()
    for the client to protect concurrent read by getsockopt(SO_PEERCRED).
    Signed-off-by: default avatarKuniyuki Iwashima <kuniyu@amazon.com>
    Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
    22e5751b
af_unix.c 87.8 KB