1
linux/net/sched
David S. Miller 8d50b53d66 pkt_sched: Fix OOPS on ingress qdisc add.
Bug report from Steven Jan Springl:

	Issuing the following command causes a kernel oops:
		tc qdisc add dev eth0 handle ffff: ingress

The problem mostly stems from all of the special case handling of
ingress qdiscs.

So, to fix this, do the grafting operation the same way we do for TX
qdiscs.  Which means that dev_activate() and dev_deactivate() now do
the "qdisc_sleeping <--> qdisc" transitions on dev->rx_queue too.

Future simplifications are possible now, mainly because it is
impossible for dev_queue->{qdisc,qdisc_sleeping} to be NULL.  There
are NULL checks all over to handle the ingress qdisc special case
that used to exist before this commit.

Signed-off-by: David S. Miller <davem@davemloft.net>
2008-07-30 02:44:25 -07:00
..
act_api.c net: convert BUG_TRAP to generic WARN_ON 2008-07-25 21:43:18 -07:00
act_gact.c net_sched: Add accessor function for packet length for qdiscs 2008-07-20 00:08:27 -07:00
act_ipt.c net_sched: Add accessor function for packet length for qdiscs 2008-07-20 00:08:27 -07:00
act_mirred.c net_sched: Add accessor function for packet length for qdiscs 2008-07-20 00:08:27 -07:00
act_nat.c net_sched: Add accessor function for packet length for qdiscs 2008-07-20 00:08:27 -07:00
act_pedit.c net_sched: Add accessor function for packet length for qdiscs 2008-07-20 00:08:27 -07:00
act_police.c net: convert BUG_TRAP to generic WARN_ON 2008-07-25 21:43:18 -07:00
act_simple.c net_sched: Add accessor function for packet length for qdiscs 2008-07-20 00:08:27 -07:00
cls_api.c pkt_sched: Remove qdisc_lock_tree usage in cls_api.c 2008-07-17 19:21:24 -07:00
cls_basic.c [NET_SCHED]: Constify struct tcf_ext_map 2008-01-31 19:28:34 -08:00
cls_flow.c net-sched: cls_flow: add perturbation support 2008-07-14 20:36:32 -07:00
cls_fw.c [NET_SCHED]: Constify struct tcf_ext_map 2008-01-31 19:28:34 -08:00
cls_route.c pkt_sched: Kill qdisc_lock_tree usage in cls_route.c 2008-07-17 19:21:25 -07:00
cls_rsvp6.c [NET_SCHED]: Remove unnecessary includes 2007-07-10 22:16:41 -07:00
cls_rsvp.c [NET_SCHED]: Remove unnecessary includes 2007-07-10 22:16:41 -07:00
cls_rsvp.h [NET_SCHED]: Use nla_policy for attribute validation in classifiers 2008-01-28 15:11:23 -08:00
cls_tcindex.c [NET_SCHED]: Constify struct tcf_ext_map 2008-01-31 19:28:34 -08:00
cls_u32.c net: convert BUG_TRAP to generic WARN_ON 2008-07-25 21:43:18 -07:00
em_cmp.c [NET_SCHED]: ematch: module autoloading 2007-07-11 19:46:26 -07:00
em_meta.c [IPV4]: Add 'rtable' field in struct sk_buff to alias 'dst' and avoid casts 2008-03-05 18:30:47 -08:00
em_nbyte.c [NET_SCHED]: ematch: module autoloading 2007-07-11 19:46:26 -07:00
em_text.c [NET_SCHED]: Convert classifiers from rtnetlink to new netlink API 2008-01-28 15:11:11 -08:00
em_u32.c [PKT_SCHED]: annotate cls_u32 2008-03-17 22:46:46 -07:00
ematch.c [PKT_SCHED] ematch: Fix build warning. 2008-02-10 03:48:15 -08:00
Kconfig pkt_sched: Remove CONFIG_NET_SCH_RR 2008-06-27 19:54:05 -07:00
Makefile [NET_SCHED]: Add flow classifier 2008-01-31 19:28:36 -08:00
sch_api.c pkt_sched: Fix OOPS on ingress qdisc add. 2008-07-30 02:44:25 -07:00
sch_atm.c [PATCH] f_count may wrap around 2008-07-26 20:53:40 -04:00
sch_blackhole.c [NET]: Move Qdisc_class_ops and Qdisc_ops in appropriate sections. 2008-01-28 14:53:58 -08:00
sch_cbq.c net: convert BUG_TRAP to generic WARN_ON 2008-07-25 21:43:18 -07:00
sch_dsmark.c net_sched: Add accessor function for packet length for qdiscs 2008-07-20 00:08:27 -07:00
sch_fifo.c net_sched: Add accessor function for packet length for qdiscs 2008-07-20 00:08:27 -07:00
sch_generic.c pkt_sched: Fix OOPS on ingress qdisc add. 2008-07-30 02:44:25 -07:00
sch_gred.c net_sched: Add accessor function for packet length for qdiscs 2008-07-20 00:08:27 -07:00
sch_hfsc.c net_sched: Add accessor function for packet length for qdiscs 2008-07-20 00:08:27 -07:00
sch_htb.c net: convert BUG_TRAP to generic WARN_ON 2008-07-25 21:43:18 -07:00
sch_ingress.c net_sched: Add accessor function for packet length for qdiscs 2008-07-20 00:08:27 -07:00
sch_netem.c net_sched: Add size table for qdiscs 2008-07-20 00:08:47 -07:00
sch_prio.c net_sched: Add accessor function for packet length for qdiscs 2008-07-20 00:08:27 -07:00
sch_red.c net_sched: Add accessor function for packet length for qdiscs 2008-07-20 00:08:27 -07:00
sch_sfq.c Revert "pkt_sched: sch_sfq: dump a real number of flows" 2008-07-26 02:28:09 -07:00
sch_tbf.c net_sched: Add accessor function for packet length for qdiscs 2008-07-20 00:08:27 -07:00
sch_teql.c net_sched: Add accessor function for packet length for qdiscs 2008-07-20 00:08:27 -07:00