* [PATCH 1/3] wifi: cfg80211: do not support direct add of station to AP_VLAN interfaces
@ 2026-08-13 9:04 Slawomir Stepien
2026-08-13 9:04 ` [PATCH 2/3] wifi: cfg80211: move link_id validation earlier in nl80211_new_station() Slawomir Stepien
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Slawomir Stepien @ 2026-08-13 9:04 UTC (permalink / raw)
To: syzkaller-bugs, johannes, linux-wireless
Cc: linux-kernel, syzbot, sst, syzbot+9bdc0c5998ab45b05030
Prevent userspace from adding stations directly to AP_VLAN type
interfaces. Userspace should first add the station to the base interface
(AP type) and then can use CMD_SET_STATION to move it to AP_VLAN.
Without this path, we cannot check if the AP has been started before
adding the station - wdev for AP_VLAN does not store information about
the base AP interface.
Signed-off-by: Slawomir Stepien <sst@poczta.fm>
---
net/wireless/nl80211.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index 5adcb6bd0fc5..0c4e6bd6a44c 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -9402,7 +9402,6 @@ static int nl80211_new_station(struct sk_buff *skb, struct genl_info *info)
switch (wdev->iftype) {
case NL80211_IFTYPE_AP:
- case NL80211_IFTYPE_AP_VLAN:
case NL80211_IFTYPE_P2P_GO:
/* ignore WME attributes if iface/sta is not capable */
if (!(rdev->wiphy.flags & WIPHY_FLAG_AP_UAPSD) ||
--
2.55.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 2/3] wifi: cfg80211: move link_id validation earlier in nl80211_new_station()
2026-08-13 9:04 [PATCH 1/3] wifi: cfg80211: do not support direct add of station to AP_VLAN interfaces Slawomir Stepien
@ 2026-08-13 9:04 ` Slawomir Stepien
2026-08-13 9:04 ` [PATCH 3/3] wifi: cfg80211: check if AP has been started before adding new station Slawomir Stepien
2026-08-13 13:31 ` [syzbot ci] Re: wifi: cfg80211: do not support direct add of station to AP_VLAN interfaces syzbot ci
2 siblings, 0 replies; 4+ messages in thread
From: Slawomir Stepien @ 2026-08-13 9:04 UTC (permalink / raw)
To: syzkaller-bugs, johannes, linux-wireless
Cc: linux-kernel, syzbot, sst, syzbot+9bdc0c5998ab45b05030
I do not see a reason why this check is so low in the function. Move it
up right next to param fetch.
This new position is more beneficial for AP/Link state check that will
be added in upcoming commit.
Signed-off-by: Slawomir Stepien <sst@poczta.fm>
---
net/wireless/nl80211.c | 27 ++++++++++-----------------
1 file changed, 10 insertions(+), 17 deletions(-)
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index 0c4e6bd6a44c..ebde52655904 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -9222,6 +9222,16 @@ static int nl80211_new_station(struct sk_buff *skb, struct genl_info *info)
params.link_sta_params.link_id =
nl80211_link_id_or_invalid(info->attrs);
+ if (wdev->valid_links) {
+ if (params.link_sta_params.link_id < 0)
+ return -EINVAL;
+ if (!(wdev->valid_links & BIT(params.link_sta_params.link_id)))
+ return -ENOLINK;
+ } else {
+ if (params.link_sta_params.link_id >= 0)
+ return -EINVAL;
+ }
+
if (info->attrs[NL80211_ATTR_MLD_ADDR]) {
mac_addr = nla_data(info->attrs[NL80211_ATTR_MLD_ADDR]);
params.link_sta_params.mld_mac = mac_addr;
@@ -9494,27 +9504,10 @@ static int nl80211_new_station(struct sk_buff *skb, struct genl_info *info)
/* be aware of params.vlan when changing code here */
- if (wdev->valid_links) {
- if (params.link_sta_params.link_id < 0) {
- err = -EINVAL;
- goto out;
- }
- if (!(wdev->valid_links & BIT(params.link_sta_params.link_id))) {
- err = -ENOLINK;
- goto out;
- }
- } else {
- if (params.link_sta_params.link_id >= 0) {
- err = -EINVAL;
- goto out;
- }
- }
-
params.epp_peer =
nla_get_flag(info->attrs[NL80211_ATTR_EPP_PEER]);
err = rdev_add_station(rdev, wdev, mac_addr, ¶ms);
-out:
dev_put(params.vlan);
return err;
}
--
2.55.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 3/3] wifi: cfg80211: check if AP has been started before adding new station
2026-08-13 9:04 [PATCH 1/3] wifi: cfg80211: do not support direct add of station to AP_VLAN interfaces Slawomir Stepien
2026-08-13 9:04 ` [PATCH 2/3] wifi: cfg80211: move link_id validation earlier in nl80211_new_station() Slawomir Stepien
@ 2026-08-13 9:04 ` Slawomir Stepien
2026-08-13 13:31 ` [syzbot ci] Re: wifi: cfg80211: do not support direct add of station to AP_VLAN interfaces syzbot ci
2 siblings, 0 replies; 4+ messages in thread
From: Slawomir Stepien @ 2026-08-13 9:04 UTC (permalink / raw)
To: syzkaller-bugs, johannes, linux-wireless
Cc: linux-kernel, syzbot, sst, syzbot+9bdc0c5998ab45b05030
Adding a new station to AP makes only sense when the AP has been started
beforehand (nl80211_start_ap()). Check if AP is up and beaconing on the
link when adding new station. Return error if this isn't the case.
Reported-by: syzbot+9bdc0c5998ab45b05030@syzkaller.appspotmail.com
Closes: https://syzkaller.appspot.com/bug?extid=9bdc0c5998ab45b05030
Signed-off-by: Slawomir Stepien <sst@poczta.fm>
---
net/wireless/nl80211.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index ebde52655904..75bbd78f91ba 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -9174,7 +9174,7 @@ static int nl80211_set_station(struct sk_buff *skb, struct genl_info *info)
static int nl80211_new_station(struct sk_buff *skb, struct genl_info *info)
{
struct cfg80211_registered_device *rdev = info->user_ptr[0];
- int err;
+ int err, link_id;
struct wireless_dev *wdev = info->user_ptr[1];
struct net_device *dev = wdev->netdev;
struct station_parameters params;
@@ -9413,6 +9413,11 @@ static int nl80211_new_station(struct sk_buff *skb, struct genl_info *info)
switch (wdev->iftype) {
case NL80211_IFTYPE_AP:
case NL80211_IFTYPE_P2P_GO:
+ /* Add a new station only after the AP and link has been started */
+ link_id = wdev->valid_links ? params.link_sta_params.link_id : 0;
+ if (!wdev->links[link_id].ap.beacon_interval)
+ return -ENETDOWN;
+
/* ignore WME attributes if iface/sta is not capable */
if (!(rdev->wiphy.flags & WIPHY_FLAG_AP_UAPSD) ||
!(params.sta_flags_set & BIT(NL80211_STA_FLAG_WME)))
--
2.55.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [syzbot ci] Re: wifi: cfg80211: do not support direct add of station to AP_VLAN interfaces
2026-08-13 9:04 [PATCH 1/3] wifi: cfg80211: do not support direct add of station to AP_VLAN interfaces Slawomir Stepien
2026-08-13 9:04 ` [PATCH 2/3] wifi: cfg80211: move link_id validation earlier in nl80211_new_station() Slawomir Stepien
2026-08-13 9:04 ` [PATCH 3/3] wifi: cfg80211: check if AP has been started before adding new station Slawomir Stepien
@ 2026-08-13 13:31 ` syzbot ci
2 siblings, 0 replies; 4+ messages in thread
From: syzbot ci @ 2026-08-13 13:31 UTC (permalink / raw)
To: sst; +Cc: syzbot, syzkaller-bugs
syzbot ci has tested the following series
[v1] wifi: cfg80211: do not support direct add of station to AP_VLAN interfaces
https://lore.kernel.org/all/20260813090434.2071318-1-sst@poczta.fm
* [PATCH 1/3] wifi: cfg80211: do not support direct add of station to AP_VLAN interfaces
* [PATCH 2/3] wifi: cfg80211: move link_id validation earlier in nl80211_new_station()
* [PATCH 3/3] wifi: cfg80211: check if AP has been started before adding new station
and found no issues.
Full report is available here:
https://ci.syzbot.org/series/256a0130-8f99-4e7d-8116-32518d856b6f
***
If these findings have caused you to resend the series or submit a
separate fix, please add the following tag to your commit message:
Tested-by: syzbot@syzkaller.appspotmail.com
---
This report is generated by a bot. It may contain errors.
syzbot ci engineers can be reached at syzkaller@googlegroups.com.
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2026-08-13 13:31 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-13 9:04 [PATCH 1/3] wifi: cfg80211: do not support direct add of station to AP_VLAN interfaces Slawomir Stepien
2026-08-13 9:04 ` [PATCH 2/3] wifi: cfg80211: move link_id validation earlier in nl80211_new_station() Slawomir Stepien
2026-08-13 9:04 ` [PATCH 3/3] wifi: cfg80211: check if AP has been started before adding new station Slawomir Stepien
2026-08-13 13:31 ` [syzbot ci] Re: wifi: cfg80211: do not support direct add of station to AP_VLAN interfaces syzbot ci
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox