lkml.org 
[lkml]   [2022]   [Sep]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.19 139/155] wifi: mac80211: Dont finalize CSA in IBSS mode if state is disconnected
    Date
    From: Siddh Raman Pant <code@siddh.me>

    commit 15bc8966b6d3a5b9bfe4c9facfa02f2b69b1e5f0 upstream.

    When we are not connected to a channel, sending channel "switch"
    announcement doesn't make any sense.

    The BSS list is empty in that case. This causes the for loop in
    cfg80211_get_bss() to be bypassed, so the function returns NULL
    (check line 1424 of net/wireless/scan.c), causing the WARN_ON()
    in ieee80211_ibss_csa_beacon() to get triggered (check line 500
    of net/mac80211/ibss.c), which was consequently reported on the
    syzkaller dashboard.

    Thus, check if we have an existing connection before generating
    the CSA beacon in ieee80211_ibss_finish_csa().

    Cc: stable@vger.kernel.org
    Fixes: cd7760e62c2a ("mac80211: add support for CSA in IBSS mode")
    Link: https://syzkaller.appspot.com/bug?id=05603ef4ae8926761b678d2939a3b2ad28ab9ca6
    Reported-by: syzbot+b6c9fe29aefe68e4ad34@syzkaller.appspotmail.com
    Signed-off-by: Siddh Raman Pant <code@siddh.me>
    Tested-by: syzbot+b6c9fe29aefe68e4ad34@syzkaller.appspotmail.com
    Link: https://lore.kernel.org/r/20220814151512.9985-1-code@siddh.me
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    net/mac80211/ibss.c | 4 ++++
    1 file changed, 4 insertions(+)

    --- a/net/mac80211/ibss.c
    +++ b/net/mac80211/ibss.c
    @@ -534,6 +534,10 @@ int ieee80211_ibss_finish_csa(struct iee

    sdata_assert_lock(sdata);

    + /* When not connected/joined, sending CSA doesn't make sense. */
    + if (ifibss->state != IEEE80211_IBSS_MLME_JOINED)
    + return -ENOLINK;
    +
    /* update cfg80211 bss information with the new channel */
    if (!is_zero_ether_addr(ifibss->bssid)) {
    cbss = cfg80211_get_bss(sdata->local->hw.wiphy,

    \
     
     \ /
      Last update: 2022-09-06 16:27    [W:2.925 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site