linux/net/core
Ranko Zivojnovic 0929c2dd83 [NET]: gen_estimator deadlock fix
-Fixes ABBA deadlock noted by Patrick McHardy <kaber@trash.net>:

> There is at least one ABBA deadlock, est_timer() does:
> read_lock(&est_lock)
> spin_lock(e->stats_lock) (which is dev->queue_lock)
>
> and qdisc_destroy calls htb_destroy under dev->queue_lock, which
> calls htb_destroy_class, then gen_kill_estimator and this
> write_locks est_lock.

To fix the ABBA deadlock the rate estimators are now kept on an rcu list.

-The est_lock changes the use from protecting the list to protecting
the update to the 'bstat' pointer in order to avoid NULL dereferencing.

-The 'interval' member of the gen_estimator structure removed as it is
not needed.

Signed-off-by: Ranko Zivojnovic <ranko@spidernet.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
2007-07-18 01:46:50 -07:00
..
datagram.c
dev_mcast.c [NET]: dev_mcast: add multicast list synchronization helpers 2007-07-14 18:52:02 -07:00
dev.c [NET]: Add macvlan driver 2007-07-14 18:55:06 -07:00
dst.c [NET]: Merge dst_discard_in and dst_discard_out. 2007-06-07 13:39:46 -07:00
ethtool.c [NET]: Add ethtool support for NETIF_F_IPV6_CSUM devices. 2007-07-14 19:07:52 -07:00
fib_rules.c
filter.c
flow.c
gen_estimator.c [NET]: gen_estimator deadlock fix 2007-07-18 01:46:50 -07:00
gen_stats.c
iovec.c
kmap_skb.h
link_watch.c
Makefile
neighbour.c [NETLINK]: Mark netlink policies const 2007-06-07 13:40:10 -07:00
net-sysfs.c
netevent.c [NET]: net/core/netevent.c should #include <net/netevent.h> 2007-07-05 17:40:27 -07:00
netpoll.c Revert "[NET]: Fix races in net_rx_action vs netpoll." 2007-07-16 14:31:08 -07:00
pktgen.c Freezer: make kernel threads nonfreezable by default 2007-07-17 10:23:02 -07:00
request_sock.c
rtnetlink.c [RTNETLINK]: rtnl_link: allow specifying initial device address 2007-07-11 19:45:36 -07:00
scm.c O_CLOEXEC for SCM_RIGHTS 2007-07-16 09:05:45 -07:00
skbuff.c [NETFILTER]: x_tables: add TRACE target 2007-07-10 22:17:14 -07:00
sock.c [NET]: "wrong timeout value in sk_wait_data()": cleanups 2007-07-10 22:18:50 -07:00
stream.c
sysctl_net_core.c
user_dma.c
utils.c