lkml.org 
[lkml]   [2018]   [Mar]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL for 4.9 249/281] net: ena: add missing unmap bars on device removal
    Date
    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>
    ---
    drivers/net/ethernet/amazon/ena/ena_netdev.c | 15 +++++++++++----
    1 file changed, 11 insertions(+), 4 deletions(-)

    diff --git a/drivers/net/ethernet/amazon/ena/ena_netdev.c b/drivers/net/ethernet/amazon/ena/ena_netdev.c
    index fe691017d5aa..0d9ce08ee3a9 100644
    --- 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_com_dev *ena_dev, struct pci_dev *pdev)
    {
    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 *pdev, const struct pci_device_id *ent)
    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 *pdev, const struct pci_device_id *ent)
    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;
    --
    2.14.1
    \
     
     \ /
      Last update: 2018-03-19 18:44    [W:4.147 / U:0.164 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site