drivers: net: xen-netfront: fix array initialization bug
authorVincenzo Maffione <v.maffione@gmail.com>
Sat, 12 Apr 2014 09:55:40 +0000 (11:55 +0200)
committerDavid S. Miller <davem@davemloft.net>
Sat, 12 Apr 2014 20:49:06 +0000 (16:49 -0400)
This patch fixes the initialization of an array used in the TX
datapath that was mistakenly initialized together with the
RX datapath arrays. An out of range array access could happen
when RX and TX rings had different sizes.

Signed-off-by: Vincenzo Maffione <v.maffione@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/xen-netfront.c

index 057b05700f8baa081014d80b1142e7b2a7808489..158b5e639fc7307d5a98580cfd65ca23b9d3db8a 100644 (file)
@@ -1291,13 +1291,13 @@ static struct net_device *xennet_create_dev(struct xenbus_device *dev)
        for (i = 0; i < NET_TX_RING_SIZE; i++) {
                skb_entry_set_link(&np->tx_skbs[i], i+1);
                np->grant_tx_ref[i] = GRANT_INVALID_REF;
+               np->grant_tx_page[i] = NULL;
        }
 
        /* Clear out rx_skbs */
        for (i = 0; i < NET_RX_RING_SIZE; i++) {
                np->rx_skbs[i] = NULL;
                np->grant_rx_ref[i] = GRANT_INVALID_REF;
-               np->grant_tx_page[i] = NULL;
        }
 
        /* A grant for every tx ring slot */