summaryrefslogtreecommitdiff
path: root/net
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2018-01-04 17:51:53 +0300
committerJohannes Berg <johannes.berg@intel.com>2018-01-04 17:51:53 +0300
commit736a80bbfda709fb3631f5f62056f250a38e5804 (patch)
tree72e125407bb1976cf3efd3cdb909e2f67a73fb83 /net
parent3ea15452ee85754f70f3b9fa1f23165ef2e77ba7 (diff)
downloadlinux-736a80bbfda709fb3631f5f62056f250a38e5804.tar.xz
mac80211: mesh: drop frames appearing to be from us
If there are multiple mesh stations with the same MAC address, they will both get confused and start throwing warnings. Obviously in this case nothing can actually work anyway, so just drop frames that look like they're from ourselves early on. Reported-by: Gui Iribarren <gui@altermundi.net> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net')
-rw-r--r--net/mac80211/rx.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
index 70e9d2ca8bbe..4daafb07602f 100644
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
@@ -3632,6 +3632,8 @@ static bool ieee80211_accept_frame(struct ieee80211_rx_data *rx)
}
return true;
case NL80211_IFTYPE_MESH_POINT:
+ if (ether_addr_equal(sdata->vif.addr, hdr->addr2))
+ return false;
if (multicast)
return true;
return ether_addr_equal(sdata->vif.addr, hdr->addr1);