diff options
| author | YueHaibing <yuehaibing@huawei.com> | 2021-08-27 22:42:30 +0800 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2021-10-17 10:08:34 +0200 |
| commit | a354d7cc0e4e57ed338102e01a4f1b9cb8702939 (patch) | |
| tree | e23e692c42dc1f71c951697cf3483221946928e4 /net | |
| parent | 16afda8e3ed1ca97e56e4b664dea66c3057cd07b (diff) | |
| download | linux-a354d7cc0e4e57ed338102e01a4f1b9cb8702939.tar.gz linux-a354d7cc0e4e57ed338102e01a4f1b9cb8702939.tar.bz2 linux-a354d7cc0e4e57ed338102e01a4f1b9cb8702939.zip | |
mac80211: Drop frames from invalid MAC address in ad-hoc mode
[ Upstream commit a6555f844549cd190eb060daef595f94d3de1582 ]
WARNING: CPU: 1 PID: 9 at net/mac80211/sta_info.c:554
sta_info_insert_rcu+0x121/0x12a0
Modules linked in:
CPU: 1 PID: 9 Comm: kworker/u8:1 Not tainted 5.14.0-rc7+ #253
Workqueue: phy3 ieee80211_iface_work
RIP: 0010:sta_info_insert_rcu+0x121/0x12a0
...
Call Trace:
ieee80211_ibss_finish_sta+0xbc/0x170
ieee80211_ibss_work+0x13f/0x7d0
ieee80211_iface_work+0x37a/0x500
process_one_work+0x357/0x850
worker_thread+0x41/0x4d0
If an Ad-Hoc node receives packets with invalid source MAC address,
it hits a WARN_ON in sta_info_insert_check(), this can spam the log.
Signed-off-by: YueHaibing <yuehaibing@huawei.com>
Link: https://lore.kernel.org/r/20210827144230.39944-1-yuehaibing@huawei.com
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'net')
| -rw-r--r-- | net/mac80211/rx.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c index 87926c6fe0bf..cbe1177d95f9 100644 --- a/net/mac80211/rx.c +++ b/net/mac80211/rx.c @@ -3714,7 +3714,8 @@ static bool ieee80211_accept_frame(struct ieee80211_rx_data *rx) if (!bssid) return false; if (ether_addr_equal(sdata->vif.addr, hdr->addr2) || - ether_addr_equal(sdata->u.ibss.bssid, hdr->addr2)) + ether_addr_equal(sdata->u.ibss.bssid, hdr->addr2) || + !is_valid_ether_addr(hdr->addr2)) return false; if (ieee80211_is_beacon(hdr->frame_control)) return true; |
