linux-stable-rt/net/core
Neil Horman 068c6e98bc [NET] netpoll: break recursive loop in netpoll rx path
The netpoll system currently has a rx to tx path via:

netpoll_rx
 __netpoll_rx
  arp_reply
   netpoll_send_skb
    dev->hard_start_tx

This rx->tx loop places network drivers at risk of inadvertently causing a
deadlock or BUG halt by recursively trying to acquire a spinlock that is
used in both their rx and tx paths (this problem was origionally reported
to me in the 3c59x driver, which shares a spinlock between the
boomerang_interrupt and boomerang_start_xmit routines).

This patch breaks this loop, by queueing arp frames, so that they can be
responded to after all receive operations have been completed.  Tested by
myself and the reported with successful results.

Specifically it was tested with netdump.  Heres the BZ with details:
https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=194055

Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
Acked-by: Matt Mackall <mpm@selenic.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
2006-06-26 00:04:27 -07:00
..
Makefile [I/OAT]: Utility functions for offloading sk_buff to iovec copies 2006-06-17 21:25:46 -07:00
datagram.c
dev.c [NET]: make net/core/dev.c:netdev_nit static 2006-06-25 23:58:10 -07:00
dev_mcast.c [NET]: Add netif_tx_lock 2006-06-17 21:30:14 -07:00
dst.c
dv.c
ethtool.c [NET]: Added GSO toggle 2006-06-23 02:07:36 -07:00
filter.c
flow.c
gen_estimator.c
gen_stats.c
iovec.c
link_watch.c [PATCH] list: use list_replace_init() instead of list_splice_init() 2006-06-23 07:43:07 -07:00
neighbour.c [NEIGH]: Fix IP-over-ATM and ARP interaction. 2006-05-12 14:56:08 -07:00
net-sysfs.c
netpoll.c [NET] netpoll: break recursive loop in netpoll rx path 2006-06-26 00:04:27 -07:00
pktgen.c [NET]: Add netif_tx_lock 2006-06-17 21:30:14 -07:00
request_sock.c
rtnetlink.c
scm.c
skbuff.c [NET]: skb_find_text ignores to argument 2006-06-26 00:00:57 -07:00
sock.c [I/OAT]: Structure changes for TCP recv offload to I/OAT 2006-06-17 21:25:48 -07:00
stream.c
sysctl_net_core.c
user_dma.c [I/OAT]: Add a sysctl for tuning the I/OAT offloaded I/O threshold 2006-06-17 21:25:54 -07:00
utils.c
wireless.c