diff options
author | Lubomir Rintel <lkundrak@v3.sk> | 2013-06-18 19:32:38 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2013-06-19 22:18:52 -0700 |
commit | 9fa8e980bb0a56e46ddd97731f83f608c39aa7a5 (patch) | |
tree | 7070f43ce5b1b0396938c2559820f4f7a6c34427 /drivers/net | |
parent | 451bff2932a69e904f41a180145de1d2358bb8f5 (diff) | |
download | linux-9fa8e980bb0a56e46ddd97731f83f608c39aa7a5.tar.gz linux-9fa8e980bb0a56e46ddd97731f83f608c39aa7a5.tar.bz2 linux-9fa8e980bb0a56e46ddd97731f83f608c39aa7a5.zip |
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) memset(rxq->rx_desc_area, 0, size); rxq->rx_desc_area_size = size; - rxq->rx_skb = kmalloc_array(rxq->rx_ring_size, sizeof(*rxq->rx_skb), + rxq->rx_skb = kcalloc(rxq->rx_ring_size, sizeof(*rxq->rx_skb), GFP_KERNEL); if (rxq->rx_skb == NULL) goto out_free; |