lkml.org 
[lkml]   [2020]   [Oct]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.14 049/191] mwifiex: Do not use GFP_KERNEL in atomic context
    Date
    From: Christophe JAILLET <christophe.jaillet@wanadoo.fr>

    [ Upstream commit d2ab7f00f4321370a8ee14e5630d4349fdacc42e ]

    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>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Link: https://lore.kernel.org/r/20200809092906.744621-1-christophe.jaillet@wanadoo.fr
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    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 0071c40afe81b..a95b1368dad71 100644
    --- a/drivers/net/wireless/marvell/mwifiex/scan.c
    +++ b/drivers/net/wireless/marvell/mwifiex/scan.c
    @@ -1890,7 +1890,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


    \
     
     \ /
      Last update: 2020-10-27 15:13    [W:4.395 / U:0.244 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site