linux/net/sched
Eric Dumazet ee09b3c1cf sfq: fix sfq class stats handling
sfq_walk() runs without qdisc lock. By the time it selects a non empty
hash slot and sfq_dump_class_stats() is run (with lock held), slot might
have been freed : We then access q->slots[SFQ_EMPTY_SLOT], out of
bounds, and crash in slot_queue_walk()

On previous kernels, bug is here but out of bounds qs[SFQ_DEPTH] and
allot[SFQ_DEPTH] are located in struct sfq_sched_data, so no illegal
memory access happens, only possibly wrong data reported to user.

Also, slot_dequeue_tail() should make sure slot skb chain is correctly
terminated, or sfq_dump_class_stats() can access freed skbs.

Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-12-22 11:39:59 -08:00
..
act_api.c pkt_sched: gen_kill_estimator() rcu fixes 2010-06-11 18:37:08 -07:00
act_csum.c net_sched: act_csum: coding style cleanup 2010-08-23 20:43:15 -07:00
act_gact.c net sched: fix some kernel memory leaks 2010-08-17 15:12:15 -07:00
act_ipt.c netfilter: xtables: resolve indirect macros 3/3 2010-10-13 18:00:46 +02:00
act_mirred.c net sched: fix some kernel memory leaks 2010-08-17 15:12:15 -07:00
act_nat.c net sched: fix some kernel memory leaks 2010-08-17 15:12:15 -07:00
act_pedit.c net sched: make pedit check for clones instead 2010-06-07 01:10:43 -07:00
act_police.c net sched: fix kernel leak in act_police 2010-09-01 14:29:34 -07:00
act_simple.c net sched: fix some kernel memory leaks 2010-08-17 15:12:15 -07:00
act_skbedit.c net sched: fix some kernel memory leaks 2010-08-17 15:12:15 -07:00
cls_api.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2010-04-11 14:53:53 -07:00
cls_basic.c classifier: report statistics for basic classifier 2010-11-08 12:17:05 -08:00
cls_cgroup.c cls_cgroup: Fix crash on module unload 2010-11-03 18:50:50 -07:00
cls_flow.c net_sched: cls_flow: add key rxhash 2010-08-21 23:40:14 -07:00
cls_fw.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
cls_route.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
cls_rsvp6.c
cls_rsvp.c
cls_rsvp.h cls_rsvp: add sanity check for the packet length 2010-08-04 21:53:15 -07:00
cls_tcindex.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
cls_u32.c cls_u32: signedness bug 2010-10-05 00:40:39 -07:00
em_cmp.c net: em_cmp.c use unaligned access helpers 2008-09-22 19:20:51 -07:00
em_meta.c tc: add meta match on receive hash 2010-08-24 14:48:10 -07:00
em_nbyte.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
em_text.c text ematch: check for NULL pointer before destroying textsearch config 2010-10-31 09:37:38 -07:00
em_u32.c [PKT_SCHED]: annotate cls_u32 2008-03-17 22:46:46 -07:00
ematch.c net sched: printk message severity 2010-05-17 23:23:12 -07:00
Kconfig pkt_sched: Make act_csum depend upon INET. 2010-08-23 20:42:11 -07:00
Makefile net/sched: add ACT_CSUM action to update packets checksums 2010-08-20 01:42:59 -07:00
sch_api.c net: dynamic ingress_queue allocation 2010-10-05 00:23:44 -07:00
sch_atm.c net_sched: remove the unused parameter of qdisc_create_dflt() 2010-10-21 03:09:47 -07:00
sch_blackhole.c pkt_sched: Add qdisc->ops->peek() implementation. 2008-10-31 00:45:55 -07:00
sch_cbq.c net_sched: remove the unused parameter of qdisc_create_dflt() 2010-10-21 03:09:47 -07:00
sch_drr.c net_sched: remove the unused parameter of qdisc_create_dflt() 2010-10-21 03:09:47 -07:00
sch_dsmark.c net_sched: remove the unused parameter of qdisc_create_dflt() 2010-10-21 03:09:47 -07:00
sch_fifo.c net_sched: remove the unused parameter of qdisc_create_dflt() 2010-10-21 03:09:47 -07:00
sch_generic.c net: factorize sync-rcu call in unregister_netdevice_many 2010-12-16 14:04:44 -08:00
sch_gred.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
sch_hfsc.c net_sched: remove the unused parameter of qdisc_create_dflt() 2010-10-21 03:09:47 -07:00
sch_htb.c net_sched: remove the unused parameter of qdisc_create_dflt() 2010-10-21 03:09:47 -07:00
sch_ingress.c net: Remove unnecessary returns from void function()s 2010-05-17 23:23:14 -07:00
sch_mq.c net_sched: remove the unused parameter of qdisc_create_dflt() 2010-10-21 03:09:47 -07:00
sch_multiq.c net_sched: remove the unused parameter of qdisc_create_dflt() 2010-10-21 03:09:47 -07:00
sch_netem.c net_sched: remove the unused parameter of qdisc_create_dflt() 2010-10-21 03:09:47 -07:00
sch_prio.c net_sched: remove the unused parameter of qdisc_create_dflt() 2010-10-21 03:09:47 -07:00
sch_red.c net: Remove unnecessary returns from void function()s 2010-05-17 23:23:14 -07:00
sch_sfq.c sfq: fix sfq class stats handling 2010-12-22 11:39:59 -08:00
sch_tbf.c net: Use NET_XMIT_SUCCESS where possible. 2010-08-10 02:51:11 -07:00
sch_teql.c net: add netif_tx_queue_frozen_or_stopped 2010-11-28 10:47:18 -08:00