kernel-fxtec-pro1x/net/sched
Jamal Hadi Salim e1e992e52f [NET_SCHED] protect action config/dump from irqs
(with no apologies to C Heston)

On Mon, 2007-10-09 at 21:00 +0800, Herbert Xu wrote:
On Sun, Sep 02, 2007 at 01:11:29PM +0000, Christian Kujau wrote:
> >
> > after upgrading to 2.6.23-rc5 (and applying davem's fix [0]), lockdep
> > was quite noisy when I tried to shape my external (wireless) interface:
> >
> > [ 6400.534545] FahCore_78.exe/3552 just changed the state of lock:
> > [ 6400.534713]  (&dev->ingress_lock){-+..}, at: [<c038d595>]
> > netif_receive_skb+0x2d5/0x3c0
> > [ 6400.534941] but this lock took another, soft-read-irq-unsafe lock in the
> > past:
> > [ 6400.535145]  (police_lock){-.--}
>
> This is a genuine dead-lock.  The police lock can be taken
> for reading with softirqs on.  If a second CPU tries to take
> the police lock for writing, while holding the ingress lock,
> then a softirq on the first CPU can dead-lock when it tries
> to get the ingress lock.

Signed-off-by: Jamal Hadi Salim <hadi@cyberus.ca>
Acked-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
2007-09-14 16:43:05 -07:00
..
act_api.c [NET_SCHED] protect action config/dump from irqs 2007-09-14 16:43:05 -07:00
act_gact.c [NET_SCHED]: Remove unnecessary includes 2007-07-10 22:16:41 -07:00
act_ipt.c [NET_SCHED]: Remove unnecessary includes 2007-07-10 22:16:41 -07:00
act_mirred.c [NET_SCHED]: Remove unnecessary includes 2007-07-10 22:16:41 -07:00
act_pedit.c [NET_SCHED]: Remove unnecessary includes 2007-07-10 22:16:41 -07:00
act_police.c [NET_SCHED] protect action config/dump from irqs 2007-09-14 16:43:05 -07:00
act_simple.c [NET_SCHED]: Remove unnecessary includes 2007-07-10 22:16:41 -07:00
cls_api.c [NET_SCHED]: Kill CONFIG_NET_CLS_POLICE 2007-07-15 00:03:05 -07:00
cls_basic.c [NET_SCHED]: Remove unnecessary includes 2007-07-10 22:16:41 -07:00
cls_fw.c [NET_SCHED]: Remove unnecessary includes 2007-07-10 22:16:41 -07:00
cls_route.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 [NETLINK]: Use nlmsg_trim() where appropriate 2007-04-25 22:26:37 -07:00
cls_rsvp6.c [NET_SCHED]: Remove unnecessary includes 2007-07-10 22:16:41 -07:00
cls_tcindex.c [NET_SCHED]: Remove unnecessary includes 2007-07-10 22:16:41 -07:00
cls_u32.c [NET_SCHED]: Kill CONFIG_NET_CLS_POLICE 2007-07-15 00:03:05 -07:00
em_cmp.c [NET_SCHED]: ematch: module autoloading 2007-07-11 19:46:26 -07:00
em_meta.c [NET_SCHED]: ematch: module autoloading 2007-07-11 19:46:26 -07:00
em_nbyte.c [NET_SCHED]: ematch: module autoloading 2007-07-11 19:46:26 -07:00
em_text.c [NET_SCHED]: ematch: module autoloading 2007-07-11 19:46:26 -07:00
em_u32.c [NET_SCHED]: ematch: module autoloading 2007-07-11 19:46:26 -07:00
ematch.c [NET_SCHED]: ematch: module autoloading 2007-07-11 19:46:26 -07:00
Kconfig [PKT_SCHED]: Some typo fixes in net/sched/Kconfig 2007-07-18 02:00:04 -07:00
Makefile [NET_SCHED]: Kill CONFIG_NET_CLS_POLICE 2007-07-15 00:03:05 -07:00
sch_api.c [NET]: Fix sch_api to properly set sch->parent on the root. 2007-07-31 02:28:19 -07:00
sch_atm.c [ATM]: Replacing kmalloc/memset combination with kzalloc. 2007-07-18 01:46:51 -07:00
sch_blackhole.c [NET_SCHED]: Remove unnecessary includes 2007-07-10 22:16:41 -07:00
sch_cbq.c [NET_SCHED]: Kill CONFIG_NET_CLS_POLICE 2007-07-15 00:03:05 -07:00
sch_dsmark.c [NET_SCHED]: Kill CONFIG_NET_CLS_POLICE 2007-07-15 00:03:05 -07:00
sch_fifo.c [NET_SCHED]: Remove unnecessary includes 2007-07-10 22:16:41 -07:00
sch_generic.c [NET_SCHED]: Remove unnecessary includes 2007-07-10 22:16:41 -07:00
sch_gred.c [NET_SCHED]: Remove unnecessary includes 2007-07-10 22:16:41 -07:00
sch_hfsc.c [NET_SCHED]: Kill CONFIG_NET_CLS_POLICE 2007-07-15 00:03:05 -07:00
sch_htb.c [NET_SCHED]: Kill CONFIG_NET_CLS_POLICE 2007-07-15 00:03:05 -07:00
sch_ingress.c [NET_SCHED]: Fix prio/ingress classification logic error 2007-07-31 02:28:18 -07:00
sch_netem.c [NET_SCHED]: Remove unnecessary includes 2007-07-10 22:16:41 -07:00
sch_prio.c [NET_SCHED] sch_prio.c: remove duplicate call of tc_classify() 2007-08-30 22:35:46 -07:00
sch_red.c [NET_SCHED]: Remove unnecessary includes 2007-07-10 22:16:41 -07:00
sch_sfq.c [NET_SCHED]: Remove unnecessary includes 2007-07-10 22:16:41 -07:00
sch_tbf.c [NET_SCHED]: Kill CONFIG_NET_CLS_POLICE 2007-07-15 00:03:05 -07:00
sch_teql.c [NET_SCHED]: Remove unnecessary includes 2007-07-10 22:16:41 -07:00