From: syzbot <syzbot+f1ba58d6b55abd13239e@syzkaller.appspotmail.com>
To: ayushmanrout27@gmail.com
Cc: ayushmanrout27@gmail.com, johannes@sipsolutions.net,
linux-kernel@vger.kernel.org, linux-wireless@vger.kernel.org,
netdev@vger.kernel.org, syzkaller-bugs@googlegroups.com
Subject: Re: [PATCH] wifi: mac80211: guard drv_net_setup_tc() against unbound AP_VLAN sdata
Date: Tue, 11 Aug 2026 14:00:51 -0700 [thread overview]
Message-ID: <6a7b8d83.ac361c09.22ff0a.0046.GAE@google.com> (raw)
In-Reply-To: <20260811205927.11228-1-ayushmanrout27@gmail.com>
> #syz test: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
This crash does not have a reproducer. I cannot test it.
>
> syzbot reports a NULL/invalid pointer dereference in
> trace_event_raw_event_drv_net_setup_tc(), reached via
> ieee80211_netdev_setup_tc() -> drv_net_setup_tc().
>
> drv_net_setup_tc() calls get_bss_sdata(sdata) unconditionally. For an
> NL80211_IFTYPE_AP_VLAN interface this does
> container_of(sdata->bss, ...), but sdata->bss is only linked
> opportunistically at interface-add time when a matching same-address
> AP interface exists - it is not enforced, so an AP_VLAN interface can
> be fully created and registered with sdata->bss left NULL.
> container_of() on NULL yields a small invalid pointer rather than
> NULL, which the trace_drv_net_setup_tc tracepoint then dereferences
> to read the interface name.
>
> Guard against an unbound AP_VLAN sdata before calling
> get_bss_sdata(), matching the WARN_ON_ONCE(!bss) precondition already
> used for this same relationship in sta_info.c. Also add
> check_sdata_in_driver(), used by the neighboring
> drv_net_fill_forward_path() but missing here.
>
> The underlying gap in ieee80211_if_add() - AP_VLAN creation not
> requiring a bound bss - is not fixed here; other get_bss_sdata()
> callers may share the exposure.
>
> Fixes: 61587f1556fe ("wifi: mac80211: add support for letting drivers register tc offload support")
> Reported-by: syzbot+f1ba58d6b55abd13239e@syzkaller.appspotmail.com
> Closes: https://syzkaller.appspot.com/bug?extid=f1ba58d6b55abd13239e
> Signed-off-by: Ayushman Rout <ayushmanrout27@gmail.com>
> ---
> net/mac80211/driver-ops.h | 16 ++++++++++++++++
> 1 file changed, 16 insertions(+)
>
> diff --git a/net/mac80211/driver-ops.h b/net/mac80211/driver-ops.h
> index f1c0b87fddd5..ecfdb51152f4 100644
> --- a/net/mac80211/driver-ops.h
> +++ b/net/mac80211/driver-ops.h
> @@ -1702,7 +1702,23 @@ static inline int drv_net_setup_tc(struct ieee80211_local *local,
>
> might_sleep();
>
> + /*
> + * An AP_VLAN interface created without a matching, same-address
> + * AP interface present never gets sdata->bss populated (see the
> + * interface-add validation in iface.c, which links bss only
> + * opportunistically and does not require it). Such an sdata is
> + * not safe to pass through get_bss_sdata(): container_of() on a
> + * NULL sdata->bss yields a small invalid pointer, which the
> + * tracepoint below then dereferences to read the interface name,
> + * causing a crash.
> + */
> + if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN && !sdata->bss)
> + return -EIO;
> +
> sdata = get_bss_sdata(sdata);
> + if (!check_sdata_in_driver(sdata))
> + return -EIO;
> +
> trace_drv_net_setup_tc(local, sdata, type);
> if (local->ops->net_setup_tc)
> ret = local->ops->net_setup_tc(&local->hw, &sdata->vif, dev,
> --
> 2.54.0
>
next prev parent reply other threads:[~2026-08-11 21:00 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-01 0:12 [syzbot] [wireless?] BUG: unable to handle kernel paging request in trace_event_raw_event_drv_net_setup_tc syzbot
2026-08-11 20:59 ` [PATCH] wifi: mac80211: guard drv_net_setup_tc() against unbound AP_VLAN sdata Ayushman Rout
2026-08-11 21:00 ` syzbot [this message]
-- strict thread matches above, loose matches on Subject: below --
2026-08-11 21:09 Ayushman Rout
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=6a7b8d83.ac361c09.22ff0a.0046.GAE@google.com \
--to=syzbot+f1ba58d6b55abd13239e@syzkaller.appspotmail.com \
--cc=ayushmanrout27@gmail.com \
--cc=johannes@sipsolutions.net \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-wireless@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=syzkaller-bugs@googlegroups.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.