• Daniel Borkmann's avatar
    bpf: drop unnecessary test in cls_bpf_classify and tcf_bpf · 04b3f8de
    Daniel Borkmann authored
    The skb_mac_header_was_set() test in cls_bpf's and act_bpf's fast-path is
    actually unnecessary and can be removed altogether. This was added by
    commit a166151c ("bpf: fix bpf helpers to use skb->mac_header relative
    offsets"), which was later on improved by 3431205e ("bpf: make programs
    see skb->data == L2 for ingress and egress"). We're always guaranteed to
    have valid mac header at the time we invoke cls_bpf_classify() or tcf_bpf().
    
    Reason is that since 6d1ccff6 ("net: reset mac header in dev_start_xmit()")
    we do skb_reset_mac_header() in __dev_queue_xmit() before we could call
    into sch_handle_egress() or any subsequent enqueue. sch_handle_ingress()
    always sees a valid mac header as well (things like skb_reset_mac_len()
    would badly fail otherwise). Thus, drop the unnecessary test in classifier
    and action case.
    Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
    Acked-by: default avatarAlexei Starovoitov <ast@kernel.org>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    04b3f8de
cls_bpf.c 11.9 KB