Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp680702ybz; Fri, 1 May 2020 06:42:50 -0700 (PDT) X-Google-Smtp-Source: APiQypLw8Umr9xWovmYsgK03Jv2qalBodCKsMSLkP2NvEJ719fhEaAAUBhbbnMvZzLVieJD91Kc1 X-Received: by 2002:a05:6402:30bb:: with SMTP id df27mr3389666edb.267.1588340569991; Fri, 01 May 2020 06:42:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1588340569; cv=none; d=google.com; s=arc-20160816; b=nUtQJwS66X8WnI2aE64J8Gj38aYqmMoWsb48OWv9KlA96oN2hWgXSnl/sPe4Aa40pp wGrdKA5QHcNkgesPIDPo8tVDrooOYPmSsDjNRMkq+mlB16eHTbBfNfNt87b59DYIx7JL jmmFMfHvwhe66du16gt4630skJAsYASzeupr9lwAL4CC7WbMhk8DUrsAaqaMDyzp/B/p rBN6MwEFDZho6JmhRZuNzmYKYyDWs35l+uHLqTuZcw7wlom5JXaUvHmqJLcHcU24/hOj bk/fra9jlkcxcPAPsUc4TNWD9Hak+TVTdTDY/DfzTFCmp5QApXmYEOLJjuWnTKzYEei9 ty+Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=ZJObl4NaAVF027wqG6r3w7PFuCKNiV+wsCNHdbfpGVE=; b=Q8GA1bqvHgq07aq/AwUXVOxNOAY5J787iAUSw8rjg/XpWiW7T26a9vs2b/5MX4a9rE 3hu2oSkgzS4ISP9x+Fmpybg91NFFyB+B6Yalhe7FxFcDLE3X1r0++YQD/2htap3TLFuo UnoRW6J0JVb0kgHp3nmKgyMHHW4AsSkYVpvy7eKsYZanxiwjCMRy+ymROlofAKdB+g4A uC1AxyBmPOkm222xCzSJ+iSnPtNoMwT6/hPhjtOK9ZY6+xdI4FWdfRFl3h7HdjANNjo/ Nef/WGEwL0FDRk6DhZuP77UZcKxRGNQGfEMdKcjpI9myOysEfN6jqV/O6tguMWqIbw5i /jvA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=oQdOIf4V; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id u15si1717217ejj.129.2020.05.01.06.42.26; Fri, 01 May 2020 06:42:49 -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=@kernel.org header.s=default header.b=oQdOIf4V; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731398AbgEANlL (ORCPT + 99 others); Fri, 1 May 2020 09:41:11 -0400 Received: from mail.kernel.org ([198.145.29.99]:41352 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728833AbgEANlI (ORCPT ); Fri, 1 May 2020 09:41:08 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id D6188205C9; Fri, 1 May 2020 13:41:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1588340467; bh=t6QrlUuqm7H12f/LEkP2lMqOz6UI8P+PkX2WkGbdVLQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=oQdOIf4VZlb7WvGfbBs5jERtCUN30D4GiwqGVoz9JanaG5CW7Up2FqWxAUV1bWR0+ wHGqA+vdHY/8VqMWBd3ae/WKzcbvjAa91zrPf5FNA2CxJoUkOmNcFabEEUCCfQC181 +0qaO2LdK8JbotydiUD+Ey5OWU9BwalDmcxyKR2M= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Tamizh chelvam , Johannes Berg , Sasha Levin Subject: [PATCH 5.4 69/83] mac80211: fix channel switch trigger from unknown mesh peer Date: Fri, 1 May 2020 15:23:48 +0200 Message-Id: <20200501131541.304152226@linuxfoundation.org> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200501131524.004332640@linuxfoundation.org> References: <20200501131524.004332640@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Tamizh chelvam [ Upstream commit 93e2d04a1888668183f3fb48666e90b9b31d29e6 ] Previously mesh channel switch happens if beacon contains CSA IE without checking the mesh peer info. Due to that channel switch happens even if the beacon is not from its own mesh peer. Fixing that by checking if the CSA originated from the same mesh network before proceeding for channel switch. Signed-off-by: Tamizh chelvam Link: https://lore.kernel.org/r/1585403604-29274-1-git-send-email-tamizhr@codeaurora.org Signed-off-by: Johannes Berg Signed-off-by: Sasha Levin --- net/mac80211/mesh.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/net/mac80211/mesh.c b/net/mac80211/mesh.c index d09b3c789314d..36978a0e50001 100644 --- a/net/mac80211/mesh.c +++ b/net/mac80211/mesh.c @@ -1257,15 +1257,15 @@ static void ieee80211_mesh_rx_bcn_presp(struct ieee80211_sub_if_data *sdata, sdata->u.mesh.mshcfg.rssi_threshold < rx_status->signal) mesh_neighbour_update(sdata, mgmt->sa, &elems, rx_status); + + if (ifmsh->csa_role != IEEE80211_MESH_CSA_ROLE_INIT && + !sdata->vif.csa_active) + ieee80211_mesh_process_chnswitch(sdata, &elems, true); } if (ifmsh->sync_ops) ifmsh->sync_ops->rx_bcn_presp(sdata, stype, mgmt, &elems, rx_status); - - if (ifmsh->csa_role != IEEE80211_MESH_CSA_ROLE_INIT && - !sdata->vif.csa_active) - ieee80211_mesh_process_chnswitch(sdata, &elems, true); } int ieee80211_mesh_finish_csa(struct ieee80211_sub_if_data *sdata) @@ -1373,6 +1373,9 @@ static void mesh_rx_csa_frame(struct ieee80211_sub_if_data *sdata, ieee802_11_parse_elems(pos, len - baselen, true, &elems, mgmt->bssid, NULL); + if (!mesh_matches_local(sdata, &elems)) + return; + ifmsh->chsw_ttl = elems.mesh_chansw_params_ie->mesh_ttl; if (!--ifmsh->chsw_ttl) fwd_csa = false; -- 2.20.1