Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp3345012pxf; Mon, 5 Apr 2021 09:34:53 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzAFHuvqm6e0K5QUrIXaBj5eW43Zh/RpKza7iR4iDnmyY+xfR77UfRiAjCHl2Jx0gNOIsBJ X-Received: by 2002:a17:906:b53:: with SMTP id v19mr11926309ejg.542.1617640492951; Mon, 05 Apr 2021 09:34:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1617640492; cv=none; d=google.com; s=arc-20160816; b=neDWdMV/NbiZjyPCsqHgS7G/GnuAfSETKD9ASwfHu6utTDHijXR2+aH1wabk/uF07G z5W7yOO0pFwkaBVg+LL9cIT+wmCVP/wjBiEm3RtrcEdnXuIzkT+hDK2bu9eqM0QlheW4 ZpyS7ssZqlY+be7R0TQ4u/BmxDibTeqf20GdtUJ5A4wfZRRG00114m2DiNm3vOi7qtID C0AQ1ndfeRcN3apn6A2A3Snn5+coEkyuOlMEGYnACqXGssrbWrZGEvx5jwtATAHOH+I6 GD1iHfcHMgsnJkyOh9JyRZ3zL5HjuaKfD8Q+gqDLbMmVvAOnAhxdg37Ofuh5imA7Ysso crQw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=ZOHCVBnmV4AQyHeydg5B6TVHHjHT9oNhzInEbSrePwg=; b=yhctoQp8cdYr2YT66hAvH9j2cEZ0V2IEXJxvvI8RhQ8Z+WzRiLhzvE1g7m433D8Tu1 laPBDsQy4yXFSduMHDon4rwDZ0bjKQl0vwhTTM+Xy4ZPprvEDznzx0C2nVWliW5Wi3AY hcTw6wD8kYKIJiFWImn252emG2TF4Rau3AkT90NrsR/AE9tM8Pm64+aAqGUR5enzKzXu FYbx+nHv1yiWJvoLhaV5D2mTUXx3M+m3Aoeg4YavNaADyNGi3AvvOe7lTJkH7rkhWDJu t5LtsibA4C/cuVo+rKG0k0P0jVHbwxqvaax7/QPX5G9/TBgLhzYG3NDMq2t1N+YCbj/M tVUQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=onxtPTYY; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id h12si686519ejf.430.2021.04.05.09.34.28; Mon, 05 Apr 2021 09:34:52 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=onxtPTYY; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239263AbhDEJMa (ORCPT + 99 others); Mon, 5 Apr 2021 05:12:30 -0400 Received: from mail.kernel.org ([198.145.29.99]:55162 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238984AbhDEJJR (ORCPT ); Mon, 5 Apr 2021 05:09:17 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 69DF861398; Mon, 5 Apr 2021 09:09:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1617613751; bh=U1lwT8S3H4cJYaYaVzzMDfZD3C+/0vcojHddf7mcTGI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=onxtPTYYCb4o5ZybVVtWvhCMhXrb4pIRiJeYjShii1NNdFWS33Vfiz2KZ9lqGONcc LE5YjPkg8Ytodxd944wkyEiFApH/0rf8ptgr13TKc/nlNg7bNrzJMwNDZKONgDDFDY NvRB4MrFxq2jXsYJBDAKltFhSk/w0ScwjWkWTP2E= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Luca Pesce , Kalle Valo , Sasha Levin Subject: [PATCH 5.10 042/126] brcmfmac: clear EAP/association status bits on linkdown events Date: Mon, 5 Apr 2021 10:53:24 +0200 Message-Id: <20210405085032.440568386@linuxfoundation.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210405085031.040238881@linuxfoundation.org> References: <20210405085031.040238881@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Luca Pesce [ Upstream commit e862a3e4088070de352fdafe9bd9e3ae0a95a33c ] This ensure that previous association attempts do not leave stale statuses on subsequent attempts. This fixes the WARN_ON(!cr->bss)) from __cfg80211_connect_result() when connecting to an AP after a previous connection failure (e.g. where EAP fails due to incorrect psk but association succeeded). In some scenarios, indeed, brcmf_is_linkup() was reporting a link up event too early due to stale BRCMF_VIF_STATUS_ASSOC_SUCCESS bit, thus reporting to cfg80211 a connection result with a zeroed bssid (vif->profile.bssid is still empty), causing the WARN_ON due to the call to cfg80211_get_bss() with the empty bssid. Signed-off-by: Luca Pesce Signed-off-by: Kalle Valo Link: https://lore.kernel.org/r/1608807119-21785-1-git-send-email-luca.pesce@vimar.com Signed-off-by: Sasha Levin --- .../net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c index 0ee421f30aa2..23e6422c2251 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c @@ -5611,7 +5611,8 @@ static bool brcmf_is_linkup(struct brcmf_cfg80211_vif *vif, return false; } -static bool brcmf_is_linkdown(const struct brcmf_event_msg *e) +static bool brcmf_is_linkdown(struct brcmf_cfg80211_vif *vif, + const struct brcmf_event_msg *e) { u32 event = e->event_code; u16 flags = e->flags; @@ -5620,6 +5621,8 @@ static bool brcmf_is_linkdown(const struct brcmf_event_msg *e) (event == BRCMF_E_DISASSOC_IND) || ((event == BRCMF_E_LINK) && (!(flags & BRCMF_EVENT_MSG_LINK)))) { brcmf_dbg(CONN, "Processing link down\n"); + clear_bit(BRCMF_VIF_STATUS_EAP_SUCCESS, &vif->sme_state); + clear_bit(BRCMF_VIF_STATUS_ASSOC_SUCCESS, &vif->sme_state); return true; } return false; @@ -6067,7 +6070,7 @@ brcmf_notify_connect_status(struct brcmf_if *ifp, } else brcmf_bss_connect_done(cfg, ndev, e, true); brcmf_net_setcarrier(ifp, true); - } else if (brcmf_is_linkdown(e)) { + } else if (brcmf_is_linkdown(ifp->vif, e)) { brcmf_dbg(CONN, "Linkdown\n"); if (!brcmf_is_ibssmode(ifp->vif) && test_bit(BRCMF_VIF_STATUS_CONNECTED, -- 2.30.1