linux_dsm_epyc7002/net
Herbert Xu 58ec3b4db9 net: Fix netdev_run_todo dead-lock
Benjamin Thery tracked down a bug that explains many instances
of the error

unregister_netdevice: waiting for %s to become free. Usage count = %d

It turns out that netdev_run_todo can dead-lock with itself if
a second instance of it is run in a thread that will then free
a reference to the device waited on by the first instance.

The problem is really quite silly.  We were trying to create
parallelism where none was required.  As netdev_run_todo always
follows a RTNL section, and that todo tasks can only be added
with the RTNL held, by definition you should only need to wait
for the very ones that you've added and be done with it.

There is no need for a second mutex or spinlock.

This is exactly what the following patch does.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
2008-10-07 15:50:03 -07:00
..
9p 9p: fix put_data error handling 2008-09-24 16:22:22 -05:00
802
8021q
appletalk
atm
ax25 ax25: Quick fix for making sure unaccepted sockets get destroyed. 2008-10-06 12:53:50 -07:00
bluetooth [Bluetooth] Fix regression from using default link policy 2008-09-12 03:11:54 +02:00
bridge bridge: don't allow setting hello time to zero 2008-09-08 13:46:54 -07:00
can
core net: Fix netdev_run_todo dead-lock 2008-10-07 15:50:03 -07:00
dccp
decnet
econet
ethernet
ieee80211
ipv4 tcp: Fix possible double-ack w/ user dma 2008-10-07 15:31:19 -07:00
ipv6 XFRM,IPv6: initialize ip6_dst_blackhole_ops.kmem_cachep 2008-10-01 02:37:56 -07:00
ipx
irda
iucv iucv: Fix mismerge again. 2008-09-30 03:03:35 -07:00
key af_key: Free dumping state on socket close 2008-10-01 05:17:54 -07:00
lapb
llc
mac80211 Revert "mac80211: Use IWEVASSOCREQIE instead of IWEVCUSTOM" 2008-09-05 12:38:09 -07:00
netfilter netfilter: nf_conntrack_irc: make sure string is terminated before calling simple_strtoul 2008-09-07 18:21:24 -07:00
netlabel
netlink
netrom netrom: Fix sock_orphan() use in nr_release 2008-10-06 12:54:57 -07:00
packet
rfkill
rose
rxrpc
sched warn: Turn the netdev timeout WARN_ON() into a WARN() 2008-09-16 19:39:33 -07:00
sctp sctp: Fix kernel panic while process protocol violation parameter 2008-09-30 05:32:24 -07:00
sunrpc
tipc tipc: Don't use structure names which easily globally conflict. 2008-09-02 23:38:32 -07:00
unix
wanrouter
wireless
x25
xfrm ipsec: Fix pskb_expand_head corruption in xfrm_state_check_space 2008-09-30 02:03:19 -07:00
compat.c
Kconfig
Makefile
nonet.c
socket.c sys_paccept: disable paccept() until API design is resolved 2008-09-23 08:09:14 -07:00
sysctl_net.c
TUNABLE