1
linux/net/sched
Daniel Borkmann 3a461da1d0 cls_bpf: reset class and reuse major in da
There are two issues with the current code. First one is that we need
to set res->class to 0 in case we use non-default classid matching.

This is important for the case where cls_bpf was initially set up with
an optional binding to a default class with tcf_bind_filter(), where
the underlying qdisc implements bind_tcf() that fills res->class and
tests for it later on when doing the classification. Convention for
these cases is that after tc_classify() was called, such qdiscs (atm,
drr, qfq, cbq, hfsc, htb) first test class, and if 0, then they lookup
based on classid.

Second, there's a bug with da mode, where res->classid is only assigned
a 16 bit minor, but it needs to expand to the full 32 bit major/minor
combination instead, therefore we need to expand with the bound major.
This is fine as classes belonging to a classful qdisc must share the
same major.

Fixes: 045efa82ff ("cls_bpf: introduce integrated actions")
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
2016-03-18 19:35:21 -04:00
..
act_api.c net_sched: add network namespace support for tc actions 2016-02-25 14:16:21 -05:00
act_bpf.c net_sched: add network namespace support for tc actions 2016-02-25 14:16:21 -05:00
act_connmark.c net_sched: add network namespace support for tc actions 2016-02-25 14:16:21 -05:00
act_csum.c net_sched: add network namespace support for tc actions 2016-02-25 14:16:21 -05:00
act_gact.c net_sched: add network namespace support for tc actions 2016-02-25 14:16:21 -05:00
act_ife.c act_ife: fix a typo in kmemdup() parameters 2016-03-06 22:43:44 -05:00
act_ipt.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-03-08 12:34:12 -05:00
act_meta_mark.c Support to encoding decoding skb mark on IFE action 2016-03-01 17:15:23 -05:00
act_meta_skbprio.c Support to encoding decoding skb prio on IFE action 2016-03-01 17:15:23 -05:00
act_mirred.c net: remove skb_sender_cpu_clear() 2016-03-01 17:36:47 -05:00
act_nat.c net_sched: add network namespace support for tc actions 2016-02-25 14:16:21 -05:00
act_pedit.c net_sched: add network namespace support for tc actions 2016-02-25 14:16:21 -05:00
act_police.c net_sched: add network namespace support for tc actions 2016-02-25 14:16:21 -05:00
act_simple.c net_sched: add network namespace support for tc actions 2016-02-25 14:16:21 -05:00
act_skbedit.c net_sched: add network namespace support for tc actions 2016-02-25 14:16:21 -05:00
act_vlan.c net_sched: add network namespace support for tc actions 2016-02-25 14:16:21 -05:00
cls_api.c
cls_basic.c
cls_bpf.c cls_bpf: reset class and reuse major in da 2016-03-18 19:35:21 -04:00
cls_cgroup.c
cls_flow.c sched: cls_flow: use skb_to_full_sk() helper 2015-11-08 20:56:39 -05:00
cls_flower.c net/flower: Fix pointer cast 2016-03-11 12:04:37 -05:00
cls_fw.c net: revert "net_sched: move tp->root allocation into fw_init()" 2015-09-24 14:33:30 -07:00
cls_route.c
cls_rsvp6.c
cls_rsvp.c
cls_rsvp.h net_sched: convert rsvp to call tcf_exts_destroy from rcu callback 2015-08-26 11:01:45 -07:00
cls_tcindex.c net_sched: convert tcindex to call tcf_exts_destroy from rcu callback 2015-08-26 11:01:44 -07:00
cls_u32.c net: sched: cls_u32 add bit to specify software only rules 2016-03-01 16:05:39 -05:00
em_canid.c
em_cmp.c
em_ipset.c netfilter: x_tables: Pass struct net in xt_action_param 2015-09-18 21:58:14 +02:00
em_meta.c net_sched: em_meta: use skb_to_full_sk() helper 2015-11-08 20:56:39 -05:00
em_nbyte.c
em_text.c
em_u32.c
ematch.c
Kconfig Support to encoding decoding skb prio on IFE action 2016-03-01 17:15:23 -05:00
Makefile Support to encoding decoding skb prio on IFE action 2016-03-01 17:15:23 -05:00
sch_api.c net_sched: update hierarchical backlog too 2016-02-29 17:02:33 -05:00
sch_atm.c net: sched: consolidate tc_classify{,_compat} 2015-08-27 14:18:48 -07:00
sch_blackhole.c net/sched: make sch_blackhole.c explicitly non-modular 2015-10-09 07:52:28 -07:00
sch_cbq.c net_sched: update hierarchical backlog too 2016-02-29 17:02:33 -05:00
sch_choke.c net_sched: update hierarchical backlog too 2016-02-29 17:02:33 -05:00
sch_codel.c net_sched: update hierarchical backlog too 2016-02-29 17:02:33 -05:00
sch_drr.c net_sched: update hierarchical backlog too 2016-02-29 17:02:33 -05:00
sch_dsmark.c net_sched: dsmark: use qdisc_dequeue_peeked() 2016-03-08 14:35:13 -05:00
sch_fifo.c
sch_fq_codel.c net_sched: update hierarchical backlog too 2016-02-29 17:02:33 -05:00
sch_fq.c net_sched: update hierarchical backlog too 2016-02-29 17:02:33 -05:00
sch_generic.c net: sched: use pfifo_fast for non real queues 2016-03-03 17:38:46 -05:00
sch_gred.c
sch_hfsc.c net_sched: update hierarchical backlog too 2016-02-29 17:02:33 -05:00
sch_hhf.c net_sched: update hierarchical backlog too 2016-02-29 17:02:33 -05:00
sch_htb.c sch_htb: update backlog as well 2016-02-29 17:02:33 -05:00
sch_ingress.c net, sched: add clsact qdisc 2016-01-10 22:13:15 -05:00
sch_mq.c net: sched: use pfifo_fast for non real queues 2016-03-03 17:38:46 -05:00
sch_mqprio.c net: sched: use pfifo_fast for non real queues 2016-03-03 17:38:46 -05:00
sch_multiq.c net_sched: update hierarchical backlog too 2016-02-29 17:02:33 -05:00
sch_netem.c net_sched: update hierarchical backlog too 2016-02-29 17:02:33 -05:00
sch_pie.c net_sched: update hierarchical backlog too 2016-02-29 17:02:33 -05:00
sch_plug.c
sch_prio.c net_sched: update hierarchical backlog too 2016-02-29 17:02:33 -05:00
sch_qfq.c net_sched: update hierarchical backlog too 2016-02-29 17:02:33 -05:00
sch_red.c net_sched: update hierarchical backlog too 2016-02-29 17:02:33 -05:00
sch_sfb.c net_sched: update hierarchical backlog too 2016-02-29 17:02:33 -05:00
sch_sfq.c net_sched: update hierarchical backlog too 2016-02-29 17:02:33 -05:00
sch_tbf.c net_sched: update hierarchical backlog too 2016-02-29 17:02:33 -05:00
sch_teql.c