summaryrefslogtreecommitdiffstats
path: root/net/sched/act_bpf.c
diff options
context:
space:
mode:
authorDaniel Borkmann <daniel@iogearbox.net>2016-09-12 23:38:42 +0200
committerDavid S. Miller <davem@davemloft.net>2016-09-16 01:29:47 +0200
commit04b3f8de4b6d90758938a40303c0ee9a86bcb8ab (patch)
tree69a455f64c1e3a62bee759750acd9d112a4e110d /net/sched/act_bpf.c
parentnet/sched: act_tunnel_key: Remove rcu_read_lock protection (diff)
downloadlinux-04b3f8de4b6d90758938a40303c0ee9a86bcb8ab.tar.xz
linux-04b3f8de4b6d90758938a40303c0ee9a86bcb8ab.zip
bpf: drop unnecessary test in cls_bpf_classify and tcf_bpf
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 a166151cbe33 ("bpf: fix bpf helpers to use skb->mac_header relative offsets"), which was later on improved by 3431205e0397 ("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 6d1ccff62780 ("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: Daniel Borkmann <daniel@iogearbox.net> Acked-by: Alexei Starovoitov <ast@kernel.org> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/sched/act_bpf.c')
-rw-r--r--net/sched/act_bpf.c3
1 files changed, 0 insertions, 3 deletions
diff --git a/net/sched/act_bpf.c b/net/sched/act_bpf.c
index bfa870731e74..78400defa790 100644
--- a/net/sched/act_bpf.c
+++ b/net/sched/act_bpf.c
@@ -44,9 +44,6 @@ static int tcf_bpf(struct sk_buff *skb, const struct tc_action *act,
int action, filter_res;
bool at_ingress = G_TC_AT(skb->tc_verd) & AT_INGRESS;
- if (unlikely(!skb_mac_header_was_set(skb)))
- return TC_ACT_UNSPEC;
-
tcf_lastuse_update(&prog->tcf_tm);
bstats_cpu_update(this_cpu_ptr(prog->common.cpu_bstats), skb);