Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp3063620pxf; Mon, 5 Apr 2021 02:06:57 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzCCBnZ5arKxbBkVqx4g7dg0BsX9rE4a34mHdBBXdJwDqz2C/jUpkI0FhKoVSJkzq0D4emW X-Received: by 2002:a05:6e02:13b0:: with SMTP id h16mr5222776ilo.60.1617613617492; Mon, 05 Apr 2021 02:06:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1617613617; cv=none; d=google.com; s=arc-20160816; b=yxLKGTUHFqU1/UpWzk/DGEU5suYcxYBtWdRuwQXGC4/mDtlfYq6fbMAIhjq7g5Duif 9Kz9YcW7XYRHm8s9AhYCJ5jmZlYtRAr+1NUH1oRiLkQ0miRJLVuh4bIsqUJd0i0emWzL vCO9fMegkeIp03/4e6byWVqpYAAt//eITU1lGsQtsDy4anfumsEJITx5dZyj+B/pdlID Z2IkIsu3VfM1k2E9KVoCMm2/H6rZtLCjTr18Dlaem08FJ6hMkV05wMt/2l0mUAIzxcyX goqqeRW4APQb/bPNqgEMJjG9B70z4av1ojBmVIJEI/FDMlAlcJTiID52zi1uMGLpJT1N UOWw== 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=7b/A/fy3jGjvBhb8wrxVyihCXbpXnUnMr8/z7zxonLk=; b=H57/MkMRb6eic/SwVs3T/sYJniRdgqE3F7VDfNuVmFLnDT558sS5X6GzYu2qs8BD4Z pOjncNRLQcMaHm2AQ+1PGnWciZEM5U/sNxT5ozGVOtosobPC+Y7GxCDmk5HL39HX1iUF 4i6871+nGUjABjiWyzDAEVOu3LaZ1nC2HvxcGD15FlJiPKmANJBFIbPW0YAtYp/S3PeQ uXelfCFaGF/wMM44CWTDtIVXkEk6/3yyWq2TjS39Y+XYmlr6c+VyX/IfrBxQxHdYXddx TlBs0EmiD6UTdsJZzL08iN33QtbrtjDWNG7MYjPFLwmCcQEDxJ+ZkxEarJCiB+0SHVXS TtsA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=MNFLNaXY; 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 i4si14472877ilv.111.2021.04.05.02.06.45; Mon, 05 Apr 2021 02:06:57 -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=MNFLNaXY; 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 S238681AbhDEJFi (ORCPT + 99 others); Mon, 5 Apr 2021 05:05:38 -0400 Received: from mail.kernel.org ([198.145.29.99]:47552 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237810AbhDEJEB (ORCPT ); Mon, 5 Apr 2021 05:04:01 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 5CD6A61394; Mon, 5 Apr 2021 09:03:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1617613435; bh=SofwptDwmawKpzRux5oyNGLuRIqI0uy71tt49NpI7g4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=MNFLNaXYOYPKhboheOXOfW8MFnj3CYMT5agFubKEvmhvb87iXKwrfeBZroRSsAAwk sIyPllIOjaPDLJsWljItE/DcMZHDbD5dsmyQusXG5mapLSCJvfujkHFkzOT4PELfsn S9sqK+5Jgya3yltWyLwxUph+Q2yFc/a3zgbQqH9M= 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.4 35/74] brcmfmac: clear EAP/association status bits on linkdown events Date: Mon, 5 Apr 2021 10:53:59 +0200 Message-Id: <20210405085025.881382859@linuxfoundation.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210405085024.703004126@linuxfoundation.org> References: <20210405085024.703004126@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 4ca50353538e..cd813c69a178 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c @@ -5382,7 +5382,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; @@ -5391,6 +5392,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; @@ -5683,7 +5686,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)) { brcmf_bss_connect_done(cfg, ndev, e, false); -- 2.30.1