linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] brcmsmac: allocate ucode with GFP_KERNEL
@ 2018-03-16 15:41 Takashi Iwai
  2018-03-16 20:50 ` Arend van Spriel
  2018-03-27  9:09 ` Kalle Valo
  0 siblings, 2 replies; 3+ messages in thread
From: Takashi Iwai @ 2018-03-16 15:41 UTC (permalink / raw)
  To: linux-wireless
  Cc: Arend van Spriel, Franky Lin, Hante Meuleman, Chi-Hsien Lin,
	Wright Feng, Kalle Valo, brcm80211-dev-list.pdl,
	brcm80211-dev-list

The brcms_ucode_init_buf() duplicates the ucode chunks via kmemdup()
with GFP_ATOMIC as a precondition of wl->lock acquired.  This caused
allocation failures sometimes as reported in the bugzilla below.

When looking at the the real usage, one can find that it's called
solely from brcms_request_fw(), and it's obviously outside the lock.
Hence we can use GFP_KERNEL there safely for avoiding such allocation
errors.

Bugzilla: http://bugzilla.suse.com/show_bug.cgi?id=1085174
Signed-off-by: Takashi Iwai <tiwai@suse.de>

---
 drivers/net/wireless/broadcom/brcm80211/brcmsmac/mac80211_if.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmsmac/mac80211_if.c b/drivers/net/wireless/broadcom/brcm80211/brcmsmac/mac80211_if.c
index ddfdfe177e24..a14fccf8a902 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmsmac/mac80211_if.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmsmac/mac80211_if.c
@@ -1563,7 +1563,7 @@ void brcms_free_timer(struct brcms_timer *t)
 }
 
 /*
- * precondition: perimeter lock has been acquired
+ * precondition: no locking required
  */
 int brcms_ucode_init_buf(struct brcms_info *wl, void **pbuf, u32 idx)
 {
@@ -1578,7 +1578,7 @@ int brcms_ucode_init_buf(struct brcms_info *wl, void **pbuf, u32 idx)
 			if (le32_to_cpu(hdr->idx) == idx) {
 				pdata = wl->fw.fw_bin[i]->data +
 					le32_to_cpu(hdr->offset);
-				*pbuf = kmemdup(pdata, len, GFP_ATOMIC);
+				*pbuf = kmemdup(pdata, len, GFP_KERNEL);
 				if (*pbuf == NULL)
 					goto fail;
 
-- 
2.16.2

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] brcmsmac: allocate ucode with GFP_KERNEL
  2018-03-16 15:41 [PATCH] brcmsmac: allocate ucode with GFP_KERNEL Takashi Iwai
@ 2018-03-16 20:50 ` Arend van Spriel
  2018-03-27  9:09 ` Kalle Valo
  1 sibling, 0 replies; 3+ messages in thread
From: Arend van Spriel @ 2018-03-16 20:50 UTC (permalink / raw)
  To: Takashi Iwai, linux-wireless
  Cc: Franky Lin, Hante Meuleman, Chi-Hsien Lin, Wright Feng,
	Kalle Valo, brcm80211-dev-list.pdl, brcm80211-dev-list

On 3/16/2018 4:41 PM, Takashi Iwai wrote:
> The brcms_ucode_init_buf() duplicates the ucode chunks via kmemdup()
> with GFP_ATOMIC as a precondition of wl->lock acquired.  This caused
> allocation failures sometimes as reported in the bugzilla below.
>
> When looking at the the real usage, one can find that it's called
> solely from brcms_request_fw(), and it's obviously outside the lock.
> Hence we can use GFP_KERNEL there safely for avoiding such allocation
> errors.
>
> Bugzilla: http://bugzilla.suse.com/show_bug.cgi?id=1085174

Acked-by: Arend van Spriel <arend.vanspriel@broadcom.com>
> Signed-off-by: Takashi Iwai <tiwai@suse.de>
>
> ---
>   drivers/net/wireless/broadcom/brcm80211/brcmsmac/mac80211_if.c | 4 ++--
>   1 file changed, 2 insertions(+), 2 deletions(-)

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: brcmsmac: allocate ucode with GFP_KERNEL
  2018-03-16 15:41 [PATCH] brcmsmac: allocate ucode with GFP_KERNEL Takashi Iwai
  2018-03-16 20:50 ` Arend van Spriel
@ 2018-03-27  9:09 ` Kalle Valo
  1 sibling, 0 replies; 3+ messages in thread
From: Kalle Valo @ 2018-03-27  9:09 UTC (permalink / raw)
  To: Takashi Iwai
  Cc: linux-wireless, Arend van Spriel, Franky Lin, Hante Meuleman,
	Chi-Hsien Lin, Wright Feng, brcm80211-dev-list.pdl,
	brcm80211-dev-list

Takashi Iwai <tiwai@suse.de> wrote:

> The brcms_ucode_init_buf() duplicates the ucode chunks via kmemdup()
> with GFP_ATOMIC as a precondition of wl->lock acquired.  This caused
> allocation failures sometimes as reported in the bugzilla below.
> 
> When looking at the the real usage, one can find that it's called
> solely from brcms_request_fw(), and it's obviously outside the lock.
> Hence we can use GFP_KERNEL there safely for avoiding such allocation
> errors.
> 
> Bugzilla: http://bugzilla.suse.com/show_bug.cgi?id=1085174
> Signed-off-by: Takashi Iwai <tiwai@suse.de>
> Acked-by: Arend van Spriel <arend.vanspriel@broadcom.com>

Patch applied to wireless-drivers-next.git, thanks.

b1c2d0f2507b brcmsmac: allocate ucode with GFP_KERNEL

-- 
https://patchwork.kernel.org/patch/10288881/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2018-03-27  9:09 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-03-16 15:41 [PATCH] brcmsmac: allocate ucode with GFP_KERNEL Takashi Iwai
2018-03-16 20:50 ` Arend van Spriel
2018-03-27  9:09 ` Kalle Valo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).