r6040: Free irq line on error path
Subsystems (2)
PATCH 1/1 r6040: Free irq line on error path
Free irq line on error path.
Signed-off-by Denis Kirjanov <[email protected]>
--- drivers/net/r6040.c | 33 ++++++++++++++++++++------------- 1 files changed, 20 insertions(+), 13 deletions(-)
drivers/net/r6040.c +20 -13
@@ -751,7 +751,7 @@ static int r6040_open(struct net_device *dev) ret =request_irq (dev->irq, r6040_interrupt,IRQF_SHARED , dev->name, dev);if (ret) -return ret; + goto out;/* Set MAC address */ r6040_mac_address (dev);
@@ -759,30 +759,37 @@ static int r6040_open(struct net_device *dev)/* Allocate Descriptor memory */ lp->rx_ring =pci_alloc_consistent (lp->pdev,RX_DESC_SIZE , &lp->rx_ring_dma); -if (!lp->rx_ring) -return -ENOMEM ; +if (!lp->rx_ring) { + ret = -ENOMEM ; + goto err_free_irq; + } lp->tx_ring =pci_alloc_consistent (lp->pdev,TX_DESC_SIZE , &lp->tx_ring_dma);if (!lp->tx_ring) { -pci_free_consistent (lp->pdev,RX_DESC_SIZE , lp->rx_ring, - lp->rx_ring_dma); -return -ENOMEM ; + ret = -ENOMEM ; + goto err_free_rx_ring; } ret =r6040_up (dev); -if (ret) { -pci_free_consistent (lp->pdev,TX_DESC_SIZE , lp->tx_ring, - lp->tx_ring_dma); -pci_free_consistent (lp->pdev,RX_DESC_SIZE , lp->rx_ring, - lp->rx_ring_dma); -return ret; - } +if (ret) + goto err_free_tx_ring;napi_enable (&lp->napi);netif_start_queue (dev);return 0 ; + +err_free_tx_ring: +pci_free_consistent (lp->pdev,TX_DESC_SIZE , lp->tx_ring, + lp->tx_ring_dma); +err_free_rx_ring: +pci_free_consistent (lp->pdev,RX_DESC_SIZE , lp->rx_ring, + lp->rx_ring_dma); +err_free_irq: +free_irq (dev->irq, dev); +out: +return ret; } static netdev_tx_t r6040_start_xmit(struct sk_buff *skb,
Signature · 1 line
1.6.4.4
Quoted 3 lines · On Wednesday 25 August 2010 11:57:55 Denis Kirjanov wrote:
Free irq line on error path.
Signed-off-by Denis Kirjanov <[email protected]>
Acked-by Florian Fainelli <[email protected]>
Quoted 67 lines
--- drivers/net/r6040.c | 33 ++++++++++++++++++++------------- 1 files changed, 20 insertions(+), 13 deletions(-)drivers/net/r6040.c +20
-13@@ -751,7 +751,7 @@ static int r6040_open(struct net_device *dev) ret =request_irq (dev->irq, r6040_interrupt,IRQF_SHARED , dev->name, dev);if (ret) -return ret; + goto out;/* Set MAC address */ r6040_mac_address (dev);@@ -759,30 +759,37 @@ static int r6040_open(struct net_device *dev)/* Allocate Descriptor memory */ lp->rx_ring =pci_alloc_consistent (lp->pdev,RX_DESC_SIZE , &lp->rx_ring_dma); -if (!lp->rx_ring) -return -ENOMEM ; +if (!lp->rx_ring) { + ret = -ENOMEM ; + goto err_free_irq; + } lp->tx_ring =pci_alloc_consistent (lp->pdev,TX_DESC_SIZE , &lp->tx_ring_dma);if (!lp->tx_ring) { -pci_free_consistent (lp->pdev,RX_DESC_SIZE , lp->rx_ring, - lp->rx_ring_dma); -return -ENOMEM ; + ret = -ENOMEM ; + goto err_free_rx_ring; } ret =r6040_up (dev); -if (ret) { -pci_free_consistent (lp->pdev,TX_DESC_SIZE , lp->tx_ring, - lp->tx_ring_dma); -pci_free_consistent (lp->pdev,RX_DESC_SIZE , lp->rx_ring, - lp->rx_ring_dma); -return ret; - } +if (ret) + goto err_free_tx_ring;napi_enable (&lp->napi);netif_start_queue (dev);return 0 ; + +err_free_tx_ring: +pci_free_consistent (lp->pdev,TX_DESC_SIZE , lp->tx_ring, + lp->tx_ring_dma); +err_free_rx_ring: +pci_free_consistent (lp->pdev,RX_DESC_SIZE , lp->rx_ring, + lp->rx_ring_dma); +err_free_irq: +free_irq (dev->irq, dev); +out: +return ret; } static netdev_tx_t r6040_start_xmit(struct sk_buff *skb,
From: Florian Fainelli <[email protected]>
Date: Wed, 25 Aug 2010 12:05:08 +0200
Quoted 6 lines · On Wednesday 25 August 2010 11:57:55 Denis Kirjanov wrote:
Quoted 3 lines
Free irq line on error path.
Signed-off-by Denis Kirjanov <[email protected]>Acked-by Florian Fainelli <[email protected]>
Applied.