• John Fastabend's avatar
    bpf: sockmap, add sock close() hook to remove socks · 1aa12bdf
    John Fastabend authored
    The selftests test_maps program was leaving dangling BPF sockmap
    programs around because not all psock elements were removed from
    the map. The elements in turn hold a reference on the BPF program
    they are attached to causing BPF programs to stay open even after
    test_maps has completed.
    
    The original intent was that sk_state_change() would be called
    when TCP socks went through TCP_CLOSE state. However, because
    socks may be in SOCK_DEAD state or the sock may be a listening
    socket the event is not always triggered.
    
    To resolve this use the ULP infrastructure and register our own
    proto close() handler. This fixes the above case.
    
    Fixes: 174a79ff ("bpf: sockmap with sk redirect support")
    Reported-by: default avatarPrashant Bhole <bhole_prashant_q7@lab.ntt.co.jp>
    Signed-off-by: default avatarJohn Fastabend <john.fastabend@gmail.com>
    Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
    1aa12bdf
tcp.h 62.4 KB