diff options
author | Kulikov Vasiliy <segooon@gmail.com> | 2010-07-09 20:03:18 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-07-12 23:21:42 -0400 |
commit | b31fb86815153be3bc94e8ffb9dbf6e9d7694b2d (patch) | |
tree | a7bf4a424cc2aa2d620aaa4fb51c94a3b3b230e2 /drivers/net/tc35815.c | |
parent | 60eb5fd11d1c6050c45a5aab141f42dd396e2a7f (diff) |
tc35815: fix iomap leak
If tc35815_init_one() fails we must unmap mapped regions.
Signed-off-by: Kulikov Vasiliy <segooon@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/tc35815.c')
-rw-r--r-- | drivers/net/tc35815.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/net/tc35815.c b/drivers/net/tc35815.c index be08b75dbc15..99afa5c47bec 100644 --- a/drivers/net/tc35815.c +++ b/drivers/net/tc35815.c | |||
@@ -854,7 +854,7 @@ static int __devinit tc35815_init_one(struct pci_dev *pdev, | |||
854 | 854 | ||
855 | rc = register_netdev(dev); | 855 | rc = register_netdev(dev); |
856 | if (rc) | 856 | if (rc) |
857 | goto err_out; | 857 | goto err_out_iounmap; |
858 | 858 | ||
859 | memcpy(dev->perm_addr, dev->dev_addr, dev->addr_len); | 859 | memcpy(dev->perm_addr, dev->dev_addr, dev->addr_len); |
860 | printk(KERN_INFO "%s: %s at 0x%lx, %pM, IRQ %d\n", | 860 | printk(KERN_INFO "%s: %s at 0x%lx, %pM, IRQ %d\n", |
@@ -872,6 +872,8 @@ static int __devinit tc35815_init_one(struct pci_dev *pdev, | |||
872 | 872 | ||
873 | err_out_unregister: | 873 | err_out_unregister: |
874 | unregister_netdev(dev); | 874 | unregister_netdev(dev); |
875 | err_out_iounmap: | ||
876 | pcim_iounmap_regions(pdev, 1 << 1); | ||
875 | err_out: | 877 | err_out: |
876 | free_netdev(dev); | 878 | free_netdev(dev); |
877 | return rc; | 879 | return rc; |