• John Fastabend's avatar
    net: add notifier hooks for devmap bpf map · 2ddf71e2
    John Fastabend authored
    The BPF map devmap holds a refcnt on the net_device structure when
    it is in the map. We need to do this to ensure on driver unload we
    don't lose a dev reference.
    
    However, its not very convenient to have to manually unload the map
    when destroying a net device so add notifier handlers to do the cleanup
    automatically. But this creates a race between update/destroy BPF
    syscall and programs and the unregister netdev hook.
    
    Unfortunately, the best I could come up with is either to live with
    requiring manual removal of net devices from the map before removing
    the net device OR to add a mutex in devmap to ensure the map is not
    modified while we are removing a device. The fallout also requires
    that BPF programs no longer update/delete the map from the BPF program
    side because the mutex may sleep and this can not be done from inside
    an rcu critical section.  This is not a real problem though because I
    have not come up with any use cases where this is actually useful in
    practice. If/when we come up with a compelling user for this we may
    need to revisit this.
    Signed-off-by: default avatarJohn Fastabend <john.fastabend@gmail.com>
    Acked-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
    Acked-by: default avatarJesper Dangaard Brouer <brouer@redhat.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    2ddf71e2
verifier.c 109 KB