| From 470e208eb6306237bd7df4583ed7eed34fb7cf39 Mon Sep 17 00:00:00 2001 |
| From: Lu Wei <luwei32@huawei.com> |
| Date: Wed, 29 Jul 2020 11:50:05 +0800 |
| Subject: [PATCH] net: nixge: fix potential memory leak in nixge_probe() |
| |
| commit 366228ed01f6882cc203e3d5b40010dfae0be1c3 upstream. |
| |
| If some processes in nixge_probe() fail, free_netdev(dev) |
| needs to be called to aviod a memory leak. |
| |
| Fixes: 87ab207981ec ("net: nixge: Separate ctrl and dma resources") |
| Fixes: abcd3d6fc640 ("net: nixge: Fix error path for obtaining mac address") |
| Reported-by: Hulk Robot <hulkci@huawei.com> |
| Signed-off-by: Lu Wei <luwei32@huawei.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/drivers/net/ethernet/ni/nixge.c b/drivers/net/ethernet/ni/nixge.c |
| index 96f7a9818294..5245ffb0a806 100644 |
| --- a/drivers/net/ethernet/ni/nixge.c |
| +++ b/drivers/net/ethernet/ni/nixge.c |
| @@ -1318,19 +1318,21 @@ static int nixge_probe(struct platform_device *pdev) |
| netif_napi_add(ndev, &priv->napi, nixge_poll, NAPI_POLL_WEIGHT); |
| err = nixge_of_get_resources(pdev); |
| if (err) |
| - return err; |
| + goto free_netdev; |
| __nixge_hw_set_mac_address(ndev); |
| |
| priv->tx_irq = platform_get_irq_byname(pdev, "tx"); |
| if (priv->tx_irq < 0) { |
| netdev_err(ndev, "could not find 'tx' irq"); |
| - return priv->tx_irq; |
| + err = priv->tx_irq; |
| + goto free_netdev; |
| } |
| |
| priv->rx_irq = platform_get_irq_byname(pdev, "rx"); |
| if (priv->rx_irq < 0) { |
| netdev_err(ndev, "could not find 'rx' irq"); |
| - return priv->rx_irq; |
| + err = priv->rx_irq; |
| + goto free_netdev; |
| } |
| |
| priv->coalesce_count_rx = XAXIDMA_DFT_RX_THRESHOLD; |
| -- |
| 2.27.0 |
| |