Skip to content

Commit

Permalink
mt76: fix memory leak if device probing fails
Browse files Browse the repository at this point in the history
[ Upstream commit bc348de ]

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

Fixes: a86f1d0 ("mt76: move mt76 workqueue in common code")
Fixes: f1d9623 ("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>
  • Loading branch information
LorenzoBianconi authored and gregkh committed Dec 30, 2020
1 parent d5f9083 commit e2dea65
Show file tree
Hide file tree
Showing 5 changed files with 11 additions and 6 deletions.
3 changes: 2 additions & 1 deletion drivers/net/wireless/mediatek/mt76/mt7603/pci.c
Expand Up @@ -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;
}

Expand Down
3 changes: 2 additions & 1 deletion drivers/net/wireless/mediatek/mt76/mt7615/mmio.c
Expand Up @@ -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;
}

Expand Down
3 changes: 2 additions & 1 deletion drivers/net/wireless/mediatek/mt76/mt76x0/pci.c
Expand Up @@ -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;
}

Expand Down
3 changes: 2 additions & 1 deletion drivers/net/wireless/mediatek/mt76/mt76x2/pci.c
Expand Up @@ -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;
}

Expand Down
5 changes: 3 additions & 2 deletions drivers/net/wireless/mediatek/mt76/mt7915/pci.c
Expand Up @@ -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) |
Expand All @@ -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;
}

Expand Down

0 comments on commit e2dea65

Please sign in to comment.