• David S. Miller's avatar
    ax25: Use sock_graft() and remove bogus sk_socket and sk_sleep init. · 9375cb8a
    David S. Miller authored
    The way that listening sockets work in ax25 is that the packet input
    code path creates new socks via ax25_make_new() and attaches them
    to the incoming SKB.  This SKB gets queued up into the listening
    socket's receive queue.
    
    When accept()'d the sock gets hooked up to the real parent socket.
    Alternatively, if the listening socket is closed and released, any
    unborn socks stuff up in the receive queue get released.
    
    So during this time period these sockets are unreachable in any
    other way, so no wakeup events nor references to their ->sk_socket
    and ->sk_sleep members can occur.  And even if they do, all such
    paths have to make NULL checks.
    
    So do not deceptively initialize them in ax25_make_new() to the
    values in the listening socket.  Leave them at NULL.
    
    Finally, use sock_graft() in ax25_accept().
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    9375cb8a
af_ax25.c 44.2 KB