diff options
author | Lubomir Rintel <lkundrak@v3.sk> | 2013-06-18 13:32:38 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2013-06-20 01:18:52 -0400 |
commit | 9fa8e980bb0a56e46ddd97731f83f608c39aa7a5 (patch) | |
tree | 7070f43ce5b1b0396938c2559820f4f7a6c34427 /drivers/net | |
parent | 451bff2932a69e904f41a180145de1d2358bb8f5 (diff) |
mv643xx_eth: Allocate receive queue initialized to zero
Zero pointer in rx_skb is how respective rxq_deinit() finds out out that a skb
slot is unallocated. If rxq_refill() fails (e.g. on OOM condition), subsequent
teardown would result in an attempt to kfree() invalid pointers.
Signed-off-by: Lubomir Rintel <lkundrak@v3.sk>
Cc: Lennert Buytenhek <buytenh@wantstofly.org>
Cc: netdev@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/ethernet/marvell/mv643xx_eth.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/net/ethernet/marvell/mv643xx_eth.c b/drivers/net/ethernet/marvell/mv643xx_eth.c index 2ad1494efbb3..d1cbfb12c1ca 100644 --- a/drivers/net/ethernet/marvell/mv643xx_eth.c +++ b/drivers/net/ethernet/marvell/mv643xx_eth.c | |||
@@ -1757,7 +1757,7 @@ static int rxq_init(struct mv643xx_eth_private *mp, int index) | |||
1757 | memset(rxq->rx_desc_area, 0, size); | 1757 | memset(rxq->rx_desc_area, 0, size); |
1758 | 1758 | ||
1759 | rxq->rx_desc_area_size = size; | 1759 | rxq->rx_desc_area_size = size; |
1760 | rxq->rx_skb = kmalloc_array(rxq->rx_ring_size, sizeof(*rxq->rx_skb), | 1760 | rxq->rx_skb = kcalloc(rxq->rx_ring_size, sizeof(*rxq->rx_skb), |
1761 | GFP_KERNEL); | 1761 | GFP_KERNEL); |
1762 | if (rxq->rx_skb == NULL) | 1762 | if (rxq->rx_skb == NULL) |
1763 | goto out_free; | 1763 | goto out_free; |