Bugfix -- the rx chain is in memory after the tx chain -- 
the offset being used was wrong, resulting in memory corruption
when the size of the rx and tx rings weren't exactly the same.

Signed-off-by: Linas Vepstas <[EMAIL PROTECTED]>
Cc: James K Lewis <[EMAIL PROTECTED]>
Cc: Arnd Bergmann <[EMAIL PROTECTED]>

----

 drivers/net/spider_net.c |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Index: linux-2.6.18-mm2/drivers/net/spider_net.c
===================================================================
--- linux-2.6.18-mm2.orig/drivers/net/spider_net.c      2006-10-10 
13:01:06.000000000 -0500
+++ linux-2.6.18-mm2/drivers/net/spider_net.c   2006-10-10 13:03:11.000000000 
-0500
@@ -1628,8 +1628,10 @@ spider_net_open(struct net_device *netde
        if (spider_net_init_chain(card, &card->tx_chain, card->descr,
                        PCI_DMA_TODEVICE, card->tx_desc))
                goto alloc_tx_failed;
+
+       /* rx_chain is after tx_chain, so offset is descr + tx_count */
        if (spider_net_init_chain(card, &card->rx_chain,
-                       card->descr + card->rx_desc,
+                       card->descr + card->tx_desc,
                        PCI_DMA_FROMDEVICE, card->rx_desc))
                goto alloc_rx_failed;
 
-
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

Reply via email to