diff mbox

[v2,resend] b43: Fix memory leaks in b43_bus_dev_ssb_init and b43_bus_dev_bcma_init

Message ID 1452949690-16387-1-git-send-email-baijiaju1990@163.com (mailing list archive)
State Superseded
Delegated to: Kalle Valo
Headers show

Commit Message

Jia-Ju Bai Jan. 16, 2016, 1:08 p.m. UTC
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 <baijiaju1990@163.com>
---
 drivers/net/wireless/b43/main.c |    6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

Comments

Michael Büsch Jan. 16, 2016, 1:13 p.m. UTC | #1
On Sat, 16 Jan 2016 21:08:10 +0800
Jia-Ju Bai <baijiaju1990@163.com> wrote:

> 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 <baijiaju1990@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 = {


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.
Jia-Ju Bai Jan. 16, 2016, 1:17 p.m. UTC | #2
On 01/16/2016 09:13 PM, Michael Büsch wrote:
>
> 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

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Sudip Mukherjee March 11, 2016, 4:22 p.m. UTC | #3
On Sat, Jan 16, 2016 at 09:08:10PM +0800, Jia-Ju Bai wrote:
> 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 <baijiaju1990@163.com>

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 <sudip.mukherjee@codethink.co.uk>

regards
sudip
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Michael Büsch March 11, 2016, 4:30 p.m. UTC | #4
On Fri, 11 Mar 2016 21:52:30 +0530
Sudip Mukherjee <sudipm.mukherjee@gmail.com> wrote:

> On Sat, Jan 16, 2016 at 09:08:10PM +0800, Jia-Ju Bai wrote:
> > 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 <baijiaju1990@163.com>  
> 
> 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 <sudip.mukherjee@codethink.co.uk>


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?
Kalle Valo March 14, 2016, 6:15 a.m. UTC | #5
Michael Büsch <m@bues.ch> writes:

> On Fri, 11 Mar 2016 21:52:30 +0530
> Sudip Mukherjee <sudipm.mukherjee@gmail.com> wrote:
>
>> On Sat, Jan 16, 2016 at 09:08:10PM +0800, Jia-Ju Bai wrote:
>> > 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 <baijiaju1990@163.com>  
>> 
>> 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 <sudip.mukherjee@codethink.co.uk>
>
>
> 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.
diff mbox

Patch

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 = {