linux/net/sched
Or Gerlitz 9d452cebd7 net/sched: Fix actions list corruption when adding offloaded tc flows
Prior to commit b3f55bdda8, the networking core doesn't wire an in-place
actions list the when the low level driver is called to offload the flow,
but all low level drivers do that (call tcf_exts_to_list()) in their
offloading "add" logic.

Now, the in-place list is set in the core which goes over the list in a loop,
but also by the hw driver when their offloading code is invoked indirectly:

	cls_xxx add flow -> tc_setup_cb_call -> tc_exts_setup_cb_egdev_call -> hw driver

which messes up the core list instance upon driver return. Fix that by avoiding
in-place list on the net core code that deals with adding flows.

Fixes: b3f55bdda8 ('net: sched: introduce per-egress action device callbacks')
Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
Acked-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2017-10-24 19:00:54 +09:00
..
Kconfig net: sched: select cls when cls_act is enabled 2017-06-05 10:56:36 -04:00
Makefile net/sched: Introduce sample tc action 2017-01-24 13:44:28 -05:00
act_api.c net/sched: Set the net-device for egress device instance 2017-10-20 13:09:35 +01:00
act_bpf.c bpf: rename bpf_compute_data_end into bpf_compute_data_pointers 2017-09-26 13:36:44 -07:00
act_connmark.c net/sched: Change act_api and act_xxx modules to use IDR 2017-08-30 14:38:51 -07:00
act_csum.c net/sched: Change act_api and act_xxx modules to use IDR 2017-08-30 14:38:51 -07:00
act_gact.c net/sched: Change act_api and act_xxx modules to use IDR 2017-08-30 14:38:51 -07:00
act_ife.c net_sched: fix a compile warning in act_ife 2017-10-14 18:43:45 -07:00
act_ipt.c net/sched: Change act_api and act_xxx modules to use IDR 2017-08-30 14:38:51 -07:00
act_meta_mark.c net sched actions: change IFE modules alias names 2017-10-12 22:13:20 -07:00
act_meta_skbprio.c net sched actions: change IFE modules alias names 2017-10-12 22:13:20 -07:00
act_meta_skbtcindex.c net sched actions: change IFE modules alias names 2017-10-12 22:13:20 -07:00
act_mirred.c net: sched: make tc_action_ops->get_dev return dev and avoid passing net 2017-10-11 20:15:42 -07:00
act_nat.c net/sched: Change act_api and act_xxx modules to use IDR 2017-08-30 14:38:51 -07:00
act_pedit.c net/sched: Change act_api and act_xxx modules to use IDR 2017-08-30 14:38:51 -07:00
act_police.c net/sched: Change act_api and act_xxx modules to use IDR 2017-08-30 14:38:51 -07:00
act_sample.c net/sched: Change act_api and act_xxx modules to use IDR 2017-08-30 14:38:51 -07:00
act_simple.c net/sched: Change act_api and act_xxx modules to use IDR 2017-08-30 14:38:51 -07:00
act_skbedit.c net/sched: Change act_api and act_xxx modules to use IDR 2017-08-30 14:38:51 -07:00
act_skbmod.c net/sched: Change act_api and act_xxx modules to use IDR 2017-08-30 14:38:51 -07:00
act_tunnel_key.c net/sched: Change act_api and act_xxx modules to use IDR 2017-08-30 14:38:51 -07:00
act_vlan.c net/sched: Change act_api and act_xxx modules to use IDR 2017-08-30 14:38:51 -07:00
cls_api.c net/sched: Fix actions list corruption when adding offloaded tc flows 2017-10-24 19:00:54 +09:00
cls_basic.c net_sched: remove redundant assignment to ret 2017-10-01 04:08:00 +01:00
cls_bpf.c net: sched: avoid ndo_setup_tc calls for TC_SETUP_CLS* 2017-10-21 03:04:08 +01:00
cls_cgroup.c net_sched: use void pointer for filter handle 2017-08-07 14:12:17 -07:00
cls_flow.c net: sched: Convert timers to use timer_setup() 2017-10-18 12:39:54 +01:00
cls_flower.c net: sched: avoid ndo_setup_tc calls for TC_SETUP_CLS* 2017-10-21 03:04:08 +01:00
cls_fw.c net: sched: tcindex, fw, flow: use tcf_block_q helper to get struct Qdisc 2017-10-16 21:00:41 +01:00
cls_matchall.c net: sched: avoid ndo_setup_tc calls for TC_SETUP_CLS* 2017-10-21 03:04:08 +01:00
cls_route.c net_sched: add reverse binding for tc class 2017-08-31 11:40:52 -07:00
cls_rsvp.c [NET_SCHED]: Remove unnecessary includes 2007-07-10 22:16:41 -07:00
cls_rsvp.h net/sched: fix pointer check in gen_handle 2017-09-11 14:34:52 -07:00
cls_rsvp6.c [NET_SCHED]: Remove unnecessary includes 2007-07-10 22:16:41 -07:00
cls_tcindex.c net: sched: tcindex, fw, flow: use tcf_block_q helper to get struct Qdisc 2017-10-16 21:00:41 +01:00
cls_u32.c net: sched: avoid ndo_setup_tc calls for TC_SETUP_CLS* 2017-10-21 03:04:08 +01:00
em_canid.c net: sched: remove tcf_proto from ematch calls 2014-10-06 18:02:32 -04:00
em_cmp.c net_sched: cleanups 2011-01-19 23:31:12 -08:00
em_ipset.c netfilter: x_tables: move hook state into xt_action_param structure 2016-11-03 10:56:21 +01:00
em_meta.c net: convert sock.sk_refcnt from atomic_t to refcount_t 2017-07-01 07:39:08 -07:00
em_nbyte.c net: sched: remove tcf_proto from ematch calls 2014-10-06 18:02:32 -04:00
em_text.c net: Remove state argument from skb_find_text() 2015-02-22 15:59:54 -05:00
em_u32.c net_sched: cleanups 2011-01-19 23:31:12 -08:00
ematch.c net: sched: ematch: obtain net pointer from blocks 2017-10-16 21:00:40 +01:00
sch_api.c net: sched: use tcf_block_q helper to get q pointer for sch_tree_lock 2017-10-16 21:00:41 +01:00
sch_atm.c net: sched: store Qdisc pointer in struct block 2017-10-16 21:00:40 +01:00
sch_blackhole.c net_sched: drop packets after root qdisc lock is released 2016-06-25 12:19:35 -04:00
sch_cbq.c net: sched: mark expected switch fall-throughs 2017-10-22 02:07:08 +01:00
sch_choke.c treewide: use kv[mz]alloc* rather than opencoded variants 2017-05-08 17:15:13 -07:00
sch_codel.c netlink: pass extended ACK struct to parsing functions 2017-04-13 13:58:22 -04:00
sch_drr.c net: sched: mark expected switch fall-throughs 2017-10-22 02:07:08 +01:00
sch_dsmark.c net: sched: store Qdisc pointer in struct block 2017-10-16 21:00:40 +01:00
sch_fifo.c sched: don't use skb queue helpers 2016-09-19 01:47:18 -04:00
sch_fq.c mm, tree wide: replace __GFP_REPEAT by __GFP_RETRY_MAYFAIL with more useful semantic 2017-07-12 16:26:03 -07:00
sch_fq_codel.c net: sched: mark expected switch fall-throughs 2017-10-22 02:07:08 +01:00
sch_generic.c net: sched: Convert timers to use timer_setup() 2017-10-18 12:39:54 +01:00
sch_gred.c netlink: pass extended ACK struct to parsing functions 2017-04-13 13:58:22 -04:00
sch_hfsc.c net: sched: mark expected switch fall-throughs 2017-10-22 02:07:08 +01:00
sch_hhf.c sch_hhf: fix null pointer dereference on init failure 2017-08-30 15:26:11 -07:00
sch_htb.c net: sched: mark expected switch fall-throughs 2017-10-22 02:07:08 +01:00
sch_ingress.c net: sched: use extended variants of block_get/put in ingress and clsact qdiscs 2017-10-21 03:04:06 +01:00
sch_mq.c net_sched: remove tc class reference counting 2017-08-25 17:19:10 -07:00
sch_mqprio.c mqprio: fix potential null pointer dereference on opt 2017-10-19 13:13:14 +01:00
sch_multiq.c net: sched: mark expected switch fall-throughs 2017-10-22 02:07:08 +01:00
sch_netem.c net: add rb_to_skb() and other rb tree helpers 2017-10-07 00:28:53 +01:00
sch_pie.c net: sched: Convert timers to use timer_setup() 2017-10-18 12:39:54 +01:00
sch_plug.c net_sched: drop packets after root qdisc lock is released 2016-06-25 12:19:35 -04:00
sch_prio.c net: sched: mark expected switch fall-throughs 2017-10-22 02:07:08 +01:00
sch_qfq.c net: sched: mark expected switch fall-throughs 2017-10-22 02:07:08 +01:00
sch_red.c net: sched: Convert timers to use timer_setup() 2017-10-18 12:39:54 +01:00
sch_sfb.c net: sched: mark expected switch fall-throughs 2017-10-22 02:07:08 +01:00
sch_sfq.c net: sched: mark expected switch fall-throughs 2017-10-22 02:07:08 +01:00
sch_tbf.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-09-01 17:42:05 -07:00
sch_teql.c net: make ndo_get_stats64 a void function 2017-01-08 17:51:44 -05:00