brcmfmac: Fix memory leak for unpaired brcmf_{alloc/free}
authorSeung-Woo Kim <sw0312.kim@samsung.com>
Wed, 28 Oct 2020 01:52:47 +0000 (10:52 +0900)
committerKalle Valo <kvalo@codeaurora.org>
Sat, 7 Nov 2020 16:19:23 +0000 (18:19 +0200)
There are missig brcmf_free() for brcmf_alloc(). Fix memory leak
by adding missed brcmf_free().

Reported-by: Jaehoon Chung <jh80.chung@samsung.com>
Fixes: a1f5aac1765a ("brcmfmac: don't realloc wiphy during PCIe reset")
Signed-off-by: Seung-Woo Kim <sw0312.kim@samsung.com>
Reviewed-by: Arend van Spriel <arend.vanspriel@broadcom.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/1603849967-22817-1-git-send-email-sw0312.kim@samsung.com
drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c

index 1d3cc1c..45bc502 100644 (file)
@@ -1937,16 +1937,18 @@ brcmf_pcie_probe(struct pci_dev *pdev, const struct pci_device_id *id)
        fwreq = brcmf_pcie_prepare_fw_request(devinfo);
        if (!fwreq) {
                ret = -ENOMEM;
-               goto fail_bus;
+               goto fail_brcmf;
        }
 
        ret = brcmf_fw_get_firmwares(bus->dev, fwreq, brcmf_pcie_setup);
        if (ret < 0) {
                kfree(fwreq);
-               goto fail_bus;
+               goto fail_brcmf;
        }
        return 0;
 
+fail_brcmf:
+       brcmf_free(&devinfo->pdev->dev);
 fail_bus:
        kfree(bus->msgbuf);
        kfree(bus);
index e5b6033..f58a96f 100644 (file)
@@ -4541,6 +4541,7 @@ void brcmf_sdio_remove(struct brcmf_sdio *bus)
                brcmf_sdiod_intr_unregister(bus->sdiodev);
 
                brcmf_detach(bus->sdiodev->dev);
+               brcmf_free(bus->sdiodev->dev);
 
                cancel_work_sync(&bus->datawork);
                if (bus->brcmf_wq)