• Jesper Dangaard Brouer's avatar
    xdp: implement xdp_redirect_map for generic XDP · 96c5508e
    Jesper Dangaard Brouer authored
    Using bpf_redirect_map is allowed for generic XDP programs, but the
    appropriate map lookup was never performed in xdp_do_generic_redirect().
    
    Instead the map-index is directly used as the ifindex.  For the
    xdp_redirect_map sample in SKB-mode '-S', this resulted in trying
    sending on ifindex 0 which isn't valid, resulting in getting SKB
    packets dropped.  Thus, the reported performance numbers are wrong in
    commit 24251c26 ("samples/bpf: add option for native and skb mode
    for redirect apps") for the 'xdp_redirect_map -S' case.
    
    Before commit 109980b8 ("bpf: don't select potentially stale
    ri->map from buggy xdp progs") it could crash the kernel.  Like this
    commit also check that the map_owner owner is correct before
    dereferencing the map pointer.  But make sure that this API misusage
    can be caught by a tracepoint. Thus, allowing userspace via
    tracepoints to detect misbehaving bpf_progs.
    
    Fixes: 6103aa96 ("net: implement XDP_REDIRECT for xdp generic")
    Fixes: 24251c26 ("samples/bpf: add option for native and skb mode for redirect apps")
    Signed-off-by: default avatarJesper Dangaard Brouer <brouer@redhat.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    96c5508e
filter.c 113 KB