Subject: [patch] rrunner: fix buffer overflow

From: Dan Carpenter <[email-masked]>
Date: Sat, 2 Jan 2010 16:08:46 +0200

tx_skbuff is define as:
        struct sk_buff          *tx_skbuff[TX_RING_ENTRIES];

EVT_RING_ENTRIES is 64 and TX_RING_ENTRIES is 32.

This function is in a error path so that's why it wasn't noticed.

Signed-off-by: Dan Carpenter <[email-masked]>

--- orig/drivers/net/rrunner.c	2010-01-02 09:25:56.000000000 +0200
+++ devel/drivers/net/rrunner.c	2010-01-02 09:35:13.000000000 +0200
@@ -1293,7 +1293,7 @@ static void rr_dump(struct net_device *d
 
 	printk("Error code 0x%x\n", readl(&regs->Fail1));
 
-	index = (((readl(&regs->EvtPrd) >> 8) & 0xff ) - 1) % EVT_RING_ENTRIES;
+	index = (((readl(&regs->EvtPrd) >> 8) & 0xff) - 1) % TX_RING_ENTRIES;
 	cons = rrpriv->dirty_tx;
 	printk("TX ring index %i, TX consumer %i\n",
 	       index, cons);