linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] mwifiex: Do not use GFP_KERNEL in atomic context
@ 2020-08-09  9:29 Christophe JAILLET
  2020-08-18 12:52 ` Kalle Valo
  0 siblings, 1 reply; 2+ messages in thread
From: Christophe JAILLET @ 2020-08-09  9:29 UTC (permalink / raw)
  To: amitkarwar, ganapathi.bhat, huxinming820, kvalo, davem, kuba,
	yogeshp, bzhao, linville
  Cc: linux-wireless, netdev, linux-tegra, linux-kernel,
	kernel-janitors, Christophe JAILLET

A possible call chain is as follow:
  mwifiex_sdio_interrupt                            (sdio.c)
    --> mwifiex_main_process                        (main.c)
      --> mwifiex_process_cmdresp                   (cmdevt.c)
        --> mwifiex_process_sta_cmdresp             (sta_cmdresp.c)
          --> mwifiex_ret_802_11_scan               (scan.c)
            --> mwifiex_parse_single_response_buf   (scan.c)

'mwifiex_sdio_interrupt()' is an interrupt function.

Also note that 'mwifiex_ret_802_11_scan()' already uses GFP_ATOMIC.

So use GFP_ATOMIC instead of GFP_KERNEL when memory is allocated in
'mwifiex_parse_single_response_buf()'.

Fixes: 7c6fa2a843c5 ("mwifiex: use cfg80211 dynamic scan table and cfg80211_get_bss API")
or
Fixes: 601216e12c65e ("mwifiex: process RX packets in SDIO IRQ thread directly")
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
---
This is completely speculative. I don't know if the call chain given above
if possible in RL application.
So review carefully :)

I'm not sure of the Fixes tag. If I'm correct:
 - The first one is when the GFP_KERNEL has been introduced.
 - the 2nd one is when some logic has been changed to call interrupt
   handler directly instead of existing workqueue

Note that if my analysis is completely broken, it is likely that
'mwifiex_ret_802_11_scan()' could use GFP_KERNEL in order to relax some
memory allocation constrains.
---
 drivers/net/wireless/marvell/mwifiex/scan.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/wireless/marvell/mwifiex/scan.c b/drivers/net/wireless/marvell/mwifiex/scan.c
index ff932627a46c..2fb69a590bd8 100644
--- a/drivers/net/wireless/marvell/mwifiex/scan.c
+++ b/drivers/net/wireless/marvell/mwifiex/scan.c
@@ -1889,7 +1889,7 @@ mwifiex_parse_single_response_buf(struct mwifiex_private *priv, u8 **bss_info,
 					    chan, CFG80211_BSS_FTYPE_UNKNOWN,
 					    bssid, timestamp,
 					    cap_info_bitmap, beacon_period,
-					    ie_buf, ie_len, rssi, GFP_KERNEL);
+					    ie_buf, ie_len, rssi, GFP_ATOMIC);
 			if (bss) {
 				bss_priv = (struct mwifiex_bss_priv *)bss->priv;
 				bss_priv->band = band;
-- 
2.25.1


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

* Re: [PATCH] mwifiex: Do not use GFP_KERNEL in atomic context
  2020-08-09  9:29 [PATCH] mwifiex: Do not use GFP_KERNEL in atomic context Christophe JAILLET
@ 2020-08-18 12:52 ` Kalle Valo
  0 siblings, 0 replies; 2+ messages in thread
From: Kalle Valo @ 2020-08-18 12:52 UTC (permalink / raw)
  To: Christophe JAILLET
  Cc: amitkarwar, ganapathi.bhat, huxinming820, davem, kuba, yogeshp,
	bzhao, linville, linux-wireless, netdev, linux-tegra,
	linux-kernel, kernel-janitors, Christophe JAILLET

Christophe JAILLET <christophe.jaillet@wanadoo.fr> wrote:

> A possible call chain is as follow:
>   mwifiex_sdio_interrupt                            (sdio.c)
>     --> mwifiex_main_process                        (main.c)
>       --> mwifiex_process_cmdresp                   (cmdevt.c)
>         --> mwifiex_process_sta_cmdresp             (sta_cmdresp.c)
>           --> mwifiex_ret_802_11_scan               (scan.c)
>             --> mwifiex_parse_single_response_buf   (scan.c)
> 
> 'mwifiex_sdio_interrupt()' is an interrupt function.
> 
> Also note that 'mwifiex_ret_802_11_scan()' already uses GFP_ATOMIC.
> 
> So use GFP_ATOMIC instead of GFP_KERNEL when memory is allocated in
> 'mwifiex_parse_single_response_buf()'.
> 
> Fixes: 7c6fa2a843c5 ("mwifiex: use cfg80211 dynamic scan table and cfg80211_get_bss API")
> or
> Fixes: 601216e12c65e ("mwifiex: process RX packets in SDIO IRQ thread directly")
> Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>

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

d2ab7f00f432 mwifiex: Do not use GFP_KERNEL in atomic context

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

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


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

end of thread, other threads:[~2020-08-18 12:52 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-08-09  9:29 [PATCH] mwifiex: Do not use GFP_KERNEL in atomic context Christophe JAILLET
2020-08-18 12:52 ` 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).