lkml.org 
[lkml]   [2020]   [Dec]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.10 307/717] mt76: fix memory leak if device probing fails
    Date
    From: Lorenzo Bianconi <lorenzo@kernel.org>

    [ Upstream commit bc348defcc6eceeb4f7784bf9a263ddb72fd3fb4 ]

    Run mt76_free_device instead of ieee80211_free_hw if device probing
    fails in order to remove the already allocated mt76 workqueue

    Fixes: a86f1d01f5ce5 ("mt76: move mt76 workqueue in common code")
    Fixes: f1d962369d568 ("mt76: mt7915: implement HE per-rate tx power support")
    Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/net/wireless/mediatek/mt76/mt7603/pci.c | 3 ++-
    drivers/net/wireless/mediatek/mt76/mt7615/mmio.c | 3 ++-
    drivers/net/wireless/mediatek/mt76/mt76x0/pci.c | 3 ++-
    drivers/net/wireless/mediatek/mt76/mt76x2/pci.c | 3 ++-
    drivers/net/wireless/mediatek/mt76/mt7915/pci.c | 5 +++--
    5 files changed, 11 insertions(+), 6 deletions(-)

    diff --git a/drivers/net/wireless/mediatek/mt76/mt7603/pci.c b/drivers/net/wireless/mediatek/mt76/mt7603/pci.c
    index a5845da3547a9..06fa28f645f28 100644
    --- a/drivers/net/wireless/mediatek/mt76/mt7603/pci.c
    +++ b/drivers/net/wireless/mediatek/mt76/mt7603/pci.c
    @@ -57,7 +57,8 @@ mt76pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)

    return 0;
    error:
    - ieee80211_free_hw(mt76_hw(dev));
    + mt76_free_device(&dev->mt76);
    +
    return ret;
    }

    diff --git a/drivers/net/wireless/mediatek/mt76/mt7615/mmio.c b/drivers/net/wireless/mediatek/mt76/mt7615/mmio.c
    index 6de492a4cf025..9b191307e140e 100644
    --- a/drivers/net/wireless/mediatek/mt76/mt7615/mmio.c
    +++ b/drivers/net/wireless/mediatek/mt76/mt7615/mmio.c
    @@ -240,7 +240,8 @@ int mt7615_mmio_probe(struct device *pdev, void __iomem *mem_base,

    return 0;
    error:
    - ieee80211_free_hw(mt76_hw(dev));
    + mt76_free_device(&dev->mt76);
    +
    return ret;
    }

    diff --git a/drivers/net/wireless/mediatek/mt76/mt76x0/pci.c b/drivers/net/wireless/mediatek/mt76/mt76x0/pci.c
    index dda11c704abaa..b87d8e136cb9a 100644
    --- a/drivers/net/wireless/mediatek/mt76/mt76x0/pci.c
    +++ b/drivers/net/wireless/mediatek/mt76/mt76x0/pci.c
    @@ -194,7 +194,8 @@ mt76x0e_probe(struct pci_dev *pdev, const struct pci_device_id *id)
    return 0;

    error:
    - ieee80211_free_hw(mt76_hw(dev));
    + mt76_free_device(&dev->mt76);
    +
    return ret;
    }

    diff --git a/drivers/net/wireless/mediatek/mt76/mt76x2/pci.c b/drivers/net/wireless/mediatek/mt76/mt76x2/pci.c
    index 4d50dad29ddff..ecaf85b483ac3 100644
    --- a/drivers/net/wireless/mediatek/mt76/mt76x2/pci.c
    +++ b/drivers/net/wireless/mediatek/mt76/mt76x2/pci.c
    @@ -90,7 +90,8 @@ mt76x2e_probe(struct pci_dev *pdev, const struct pci_device_id *id)
    return 0;

    error:
    - ieee80211_free_hw(mt76_hw(dev));
    + mt76_free_device(&dev->mt76);
    +
    return ret;
    }

    diff --git a/drivers/net/wireless/mediatek/mt76/mt7915/pci.c b/drivers/net/wireless/mediatek/mt76/mt7915/pci.c
    index fe62b4d853e48..3ac5bbb94d294 100644
    --- a/drivers/net/wireless/mediatek/mt76/mt7915/pci.c
    +++ b/drivers/net/wireless/mediatek/mt76/mt7915/pci.c
    @@ -140,7 +140,7 @@ static int mt7915_pci_probe(struct pci_dev *pdev,
    dev = container_of(mdev, struct mt7915_dev, mt76);
    ret = mt7915_alloc_device(pdev, dev);
    if (ret)
    - return ret;
    + goto error;

    mt76_mmio_init(&dev->mt76, pcim_iomap_table(pdev)[0]);
    mdev->rev = (mt7915_l1_rr(dev, MT_HW_CHIPID) << 16) |
    @@ -163,7 +163,8 @@ static int mt7915_pci_probe(struct pci_dev *pdev,

    return 0;
    error:
    - ieee80211_free_hw(mt76_hw(dev));
    + mt76_free_device(&dev->mt76);
    +
    return ret;
    }

    --
    2.27.0


    \
     
     \ /
      Last update: 2020-12-28 16:02    [W:3.708 / U:0.040 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site