• Kuniyuki Iwashima's avatar
    af_unix: Refactor unix_next_socket(). · 4408d55a
    Kuniyuki Iwashima authored
    Currently, unix_next_socket() is overloaded depending on the 2nd argument.
    If it is NULL, unix_next_socket() returns the first socket in the hash.  If
    not NULL, it returns the next socket in the same hash list or the first
    socket in the next non-empty hash list.
    
    This patch refactors unix_next_socket() into two functions unix_get_first()
    and unix_get_next().  unix_get_first() newly acquires a lock and returns
    the first socket in the list.  unix_get_next() returns the next socket in a
    list or releases a lock and falls back to unix_get_first().
    
    In the following patch, bpf iter holds entire sockets in a list and always
    releases the lock before .show().  It always calls unix_get_first() to
    acquire a lock in each iteration.  So, this patch makes the change easier
    to follow.
    Signed-off-by: default avatarKuniyuki Iwashima <kuniyu@amazon.co.jp>
    Link: https://lore.kernel.org/r/20220113002849.4384-2-kuniyu@amazon.co.jpSigned-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
    4408d55a
af_unix.c 82.1 KB