Discussion:
[PATCH v2 resend] b43: Fix memory leaks in b43_bus_dev_ssb_init and b43_bus_dev_bcma_init
Jia-Ju Bai
2016-01-16 13:08:10 UTC
Permalink
The memory allocated by kzalloc in b43_bus_dev_ssb_init and
b43_bus_dev_bcma_init is not freed.
This patch fixes the bug by adding kfree in b43_ssb_remove,
b43_bcma_remove and error handling code of b43_bcma_probe.

Thanks Michael for his suggestion.

Signed-off-by: Jia-Ju Bai <***@163.com>
---
drivers/net/wireless/b43/main.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/net/wireless/b43/main.c b/drivers/net/wireless/b43/main.c
index ec013fb..bbea769 100644
--- a/drivers/net/wireless/b43/main.c
+++ b/drivers/net/wireless/b43/main.c
@@ -5682,11 +5682,12 @@ static int b43_bcma_probe(struct bcma_device *core)
INIT_WORK(&wl->firmware_load, b43_request_firmware);
schedule_work(&wl->firmware_load);

-bcma_out:
return err;

bcma_err_wireless_exit:
ieee80211_free_hw(wl->hw);
+bcma_out:
+ kfree(dev);
return err;
}

@@ -5714,8 +5715,8 @@ static void b43_bcma_remove(struct bcma_device *core)
b43_rng_exit(wl);

b43_leds_unregister(wl);
-
ieee80211_free_hw(wl->hw);
+ kfree(wldev->dev);
}

static struct bcma_driver b43_bcma_driver = {
@@ -5798,6 +5799,7 @@ static void b43_ssb_remove(struct ssb_device *sdev)

b43_leds_unregister(wl);
b43_wireless_exit(dev, wl);
+ kfree(dev);
}

static struct ssb_driver b43_ssb_driver = {
--
1.7.9.5
Michael Büsch
2016-01-16 13:13:21 UTC
Permalink
On Sat, 16 Jan 2016 21:08:10 +0800
Post by Jia-Ju Bai
The memory allocated by kzalloc in b43_bus_dev_ssb_init and
b43_bus_dev_bcma_init is not freed.
This patch fixes the bug by adding kfree in b43_ssb_remove,
b43_bcma_remove and error handling code of b43_bcma_probe.
Thanks Michael for his suggestion.
---
drivers/net/wireless/b43/main.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/drivers/net/wireless/b43/main.c b/drivers/net/wireless/b43/main.c
index ec013fb..bbea769 100644
--- a/drivers/net/wireless/b43/main.c
+++ b/drivers/net/wireless/b43/main.c
@@ -5682,11 +5682,12 @@ static int b43_bcma_probe(struct bcma_device *core)
INIT_WORK(&wl->firmware_load, b43_request_firmware);
schedule_work(&wl->firmware_load);
return err;
ieee80211_free_hw(wl->hw);
+ kfree(dev);
return err;
}
@@ -5714,8 +5715,8 @@ static void b43_bcma_remove(struct bcma_device *core)
b43_rng_exit(wl);
b43_leds_unregister(wl);
-
ieee80211_free_hw(wl->hw);
+ kfree(wldev->dev);
}
static struct bcma_driver b43_bcma_driver = {
@@ -5798,6 +5799,7 @@ static void b43_ssb_remove(struct ssb_device *sdev)
b43_leds_unregister(wl);
b43_wireless_exit(dev, wl);
+ kfree(dev);
}
static struct ssb_driver b43_ssb_driver = {
This still needs to be tested on both ssb and bcma devices. As long as
it's untested, there is no need to resend it to the maintainers.
--
Michael
Jia-Ju Bai
2016-01-16 13:17:30 UTC
Permalink
Post by Michael Büsch
This still needs to be tested on both ssb and bcma devices. As long as
it's untested, there is no need to resend it to the maintainers.
Okay, thanks for the reply :)


Jia-Ju Bai
Sudip Mukherjee
2016-03-11 16:22:30 UTC
Permalink
Post by Jia-Ju Bai
The memory allocated by kzalloc in b43_bus_dev_ssb_init and
b43_bus_dev_bcma_init is not freed.
This patch fixes the bug by adding kfree in b43_ssb_remove,
b43_bcma_remove and error handling code of b43_bcma_probe.
Thanks Michael for his suggestion.
The patch did not apply cleanly. I had to edit the patch to point to
drivers/net/wireless/broadcom/b43/main.c

For CONFIG_B43_SSB part-
Tested-by: Sudip Mukherjee <***@codethink.co.uk>

regards
sudip
Michael Büsch
2016-03-11 16:30:47 UTC
Permalink
On Fri, 11 Mar 2016 21:52:30 +0530
Post by Sudip Mukherjee
Post by Jia-Ju Bai
The memory allocated by kzalloc in b43_bus_dev_ssb_init and
b43_bus_dev_bcma_init is not freed.
This patch fixes the bug by adding kfree in b43_ssb_remove,
b43_bcma_remove and error handling code of b43_bcma_probe.
Thanks Michael for his suggestion.
The patch did not apply cleanly. I had to edit the patch to point to
drivers/net/wireless/broadcom/b43/main.c
For CONFIG_B43_SSB part-
Ok thanks a lot.
We possibly don't get an bcma tester anytime soon. As this is quite an
important fix, we should probably apply it.

Sudip, can you please update the patch so it applies cleanly on the
current tree? You can add my acked-by if you want.

Kalle, can you please apply it afterwards?
--
Michael
Kalle Valo
2016-03-14 06:15:33 UTC
Permalink
Post by Michael Büsch
On Fri, 11 Mar 2016 21:52:30 +0530
Post by Sudip Mukherjee
Post by Jia-Ju Bai
The memory allocated by kzalloc in b43_bus_dev_ssb_init and
b43_bus_dev_bcma_init is not freed.
This patch fixes the bug by adding kfree in b43_ssb_remove,
b43_bcma_remove and error handling code of b43_bcma_probe.
Thanks Michael for his suggestion.
The patch did not apply cleanly. I had to edit the patch to point to
drivers/net/wireless/broadcom/b43/main.c
For CONFIG_B43_SSB part-
Ok thanks a lot.
We possibly don't get an bcma tester anytime soon. As this is quite an
important fix, we should probably apply it.
Sudip, can you please update the patch so it applies cleanly on the
current tree? You can add my acked-by if you want.
Kalle, can you please apply it afterwards?
Will do.
--
Kalle Valo
Loading...