aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorByungho An <bh74.an@samsung.com>2015-01-14 20:43:11 -0500
committerDavid S. Miller <davem@davemloft.net>2015-01-15 19:01:10 -0500
commitf7d855566ff69207be1052ceecbf455f89490b42 (patch)
treed0de74bbec41497ba26105ad701dd4e4fd2bc492
parent1c1832c7cd35db90b126a984685b44858ad63d01 (diff)
net: sxgbe: Fix waring for double kfree()
This patch fixes double kfree() calls at init_rx_ring() because it causes static checker warning. Reported-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: Byungho An <bh74.an@samsung.com> Signed-off-by: Kukjin Kim <kgene@kernel.org> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/ethernet/samsung/sxgbe/sxgbe_main.c21
1 files changed, 10 insertions, 11 deletions
diff --git a/drivers/net/ethernet/samsung/sxgbe/sxgbe_main.c b/drivers/net/ethernet/samsung/sxgbe/sxgbe_main.c
index 698494481d18..b1a271853d85 100644
--- a/drivers/net/ethernet/samsung/sxgbe/sxgbe_main.c
+++ b/drivers/net/ethernet/samsung/sxgbe/sxgbe_main.c
@@ -474,13 +474,19 @@ static int init_rx_ring(struct net_device *dev, u8 queue_no,
474 /* allocate memory for RX skbuff array */ 474 /* allocate memory for RX skbuff array */
475 rx_ring->rx_skbuff_dma = kmalloc_array(rx_rsize, 475 rx_ring->rx_skbuff_dma = kmalloc_array(rx_rsize,
476 sizeof(dma_addr_t), GFP_KERNEL); 476 sizeof(dma_addr_t), GFP_KERNEL);
477 if (rx_ring->rx_skbuff_dma == NULL) 477 if (!rx_ring->rx_skbuff_dma) {
478 goto dmamem_err; 478 dma_free_coherent(priv->device,
479 rx_rsize * sizeof(struct sxgbe_rx_norm_desc),
480 rx_ring->dma_rx, rx_ring->dma_rx_phy);
481 goto error;
482 }
479 483
480 rx_ring->rx_skbuff = kmalloc_array(rx_rsize, 484 rx_ring->rx_skbuff = kmalloc_array(rx_rsize,
481 sizeof(struct sk_buff *), GFP_KERNEL); 485 sizeof(struct sk_buff *), GFP_KERNEL);
482 if (rx_ring->rx_skbuff == NULL) 486 if (!rx_ring->rx_skbuff) {
483 goto rxbuff_err; 487 kfree(rx_ring->rx_skbuff_dma);
488 goto error;
489 }
484 490
485 /* initialise the buffers */ 491 /* initialise the buffers */
486 for (desc_index = 0; desc_index < rx_rsize; desc_index++) { 492 for (desc_index = 0; desc_index < rx_rsize; desc_index++) {
@@ -502,13 +508,6 @@ static int init_rx_ring(struct net_device *dev, u8 queue_no,
502err_init_rx_buffers: 508err_init_rx_buffers:
503 while (--desc_index >= 0) 509 while (--desc_index >= 0)
504 free_rx_ring(priv->device, rx_ring, desc_index); 510 free_rx_ring(priv->device, rx_ring, desc_index);
505 kfree(rx_ring->rx_skbuff);
506rxbuff_err:
507 kfree(rx_ring->rx_skbuff_dma);
508dmamem_err:
509 dma_free_coherent(priv->device,
510 rx_rsize * sizeof(struct sxgbe_rx_norm_desc),
511 rx_ring->dma_rx, rx_ring->dma_rx_phy);
512error: 511error:
513 return -ENOMEM; 512 return -ENOMEM;
514} 513}