On Mon, Jun 12, 2006 at 11:40:29AM -0400, Neil Horman wrote: > Hey there- > 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).
Grumble. > 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. Tested how? kgdb? > + if (likely(npi)) > + while ((skb = skb_dequeue(&npi->arp_tx)) != NULL) > + arp_reply(skb); > + Assignment inside tests is frowned upon. I'd prefer pulling this out to its own function too. Mathematics is the supreme nostalgia of our time. - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html