| From foo@baz Mon Apr 9 17:09:24 CEST 2018 |
| From: Netanel Belgazal <netanel@amazon.com> |
| Date: Sun, 11 Jun 2017 15:42:47 +0300 |
| Subject: net: ena: add missing unmap bars on device removal |
| |
| From: Netanel Belgazal <netanel@amazon.com> |
| |
| |
| [ Upstream commit 0857d92f71b6cb75281fde913554b2d5436c394b ] |
| |
| This patch also change the mapping functions to devm_ functions |
| |
| Fixes: 1738cd3ed342 ("Add a driver for Amazon Elastic Network Adapters (ENA)") |
| Signed-off-by: Netanel Belgazal <netanel@amazon.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Sasha Levin <alexander.levin@microsoft.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/net/ethernet/amazon/ena/ena_netdev.c | 15 +++++++++++---- |
| 1 file changed, 11 insertions(+), 4 deletions(-) |
| |
| --- a/drivers/net/ethernet/amazon/ena/ena_netdev.c |
| +++ b/drivers/net/ethernet/amazon/ena/ena_netdev.c |
| @@ -2808,6 +2808,11 @@ static void ena_release_bars(struct ena_ |
| { |
| int release_bars; |
| |
| + if (ena_dev->mem_bar) |
| + devm_iounmap(&pdev->dev, ena_dev->mem_bar); |
| + |
| + devm_iounmap(&pdev->dev, ena_dev->reg_bar); |
| + |
| release_bars = pci_select_bars(pdev, IORESOURCE_MEM) & ENA_BAR_MASK; |
| pci_release_selected_regions(pdev, release_bars); |
| } |
| @@ -2895,8 +2900,9 @@ static int ena_probe(struct pci_dev *pde |
| goto err_free_ena_dev; |
| } |
| |
| - ena_dev->reg_bar = ioremap(pci_resource_start(pdev, ENA_REG_BAR), |
| - pci_resource_len(pdev, ENA_REG_BAR)); |
| + ena_dev->reg_bar = devm_ioremap(&pdev->dev, |
| + pci_resource_start(pdev, ENA_REG_BAR), |
| + pci_resource_len(pdev, ENA_REG_BAR)); |
| if (!ena_dev->reg_bar) { |
| dev_err(&pdev->dev, "failed to remap regs bar\n"); |
| rc = -EFAULT; |
| @@ -2916,8 +2922,9 @@ static int ena_probe(struct pci_dev *pde |
| ena_set_push_mode(pdev, ena_dev, &get_feat_ctx); |
| |
| if (ena_dev->tx_mem_queue_type == ENA_ADMIN_PLACEMENT_POLICY_DEV) { |
| - ena_dev->mem_bar = ioremap_wc(pci_resource_start(pdev, ENA_MEM_BAR), |
| - pci_resource_len(pdev, ENA_MEM_BAR)); |
| + ena_dev->mem_bar = devm_ioremap_wc(&pdev->dev, |
| + pci_resource_start(pdev, ENA_MEM_BAR), |
| + pci_resource_len(pdev, ENA_MEM_BAR)); |
| if (!ena_dev->mem_bar) { |
| rc = -EFAULT; |
| goto err_device_destroy; |