From: John Macias via B4 Relay <devnull+dencity7.gmail.com@kernel.org>
To: Jeff Johnson <jjohnson@kernel.org>
Cc: linux-wireless@vger.kernel.org, ath11k@lists.infradead.org,
linux-kernel@vger.kernel.org, ath12k@lists.infradead.org,
John Macias <dencity7@gmail.com>
Subject: [PATCH ath-next v2 0/2] wifi: ath11k/ath12k: bound READY MAC address array reads
Date: Wed, 21 Oct 2026 23:42:36 -0700 [thread overview]
Message-ID: <20261021-rdy-mac-array-bounds-v2-0-cf7f45f868dd@gmail.com> (raw)
ath11k_wmi_tlv_rdy_parse() and ath12k_wmi_rdy_parse() copy one MAC
address per radio from the READY event's fixed-struct array after
checking only the count advertised in the fixed record, not the array
TLV length. A firmware READY event with a short array makes the copy
read past the end of the TLV value.
These patches check the array length first and fall back to the
driver's default per-radio addresses when it is too short.
Found while bringing up an IPQ8074 v1 device with older firmware; the
issue is not specific to that hardware. Verified with a userspace harness
around the unmodified parsers under AddressSanitizer. Compile tested
on ath-next (W=1). The ath11k change has also run on an IPQ8074 hw1.0
board on every boot since 16 Oct; its firmware sends a well-formed
array, so that covers the normal path only. The ath12k change is
compile tested only. Neither has been tested on hardware with a
malformed event.
Jeff, following your pointers on my earlier ath12k RX-ring RFC, these
carry a full-name sign-off, an Assisted-by tag, and state the testing
explicitly. This work was developed with AI assistance.
---
Changes in v2:
- Drop RFC.
- ath11k: note the hardware run and add a Tested-on tag; no code change.
- v1 was accidentally sent twice; apologies for the duplicate.
- Link to v1: https://patch.msgid.link/20261015-rdy-mac-array-bounds-v1-0-5de276b752a3@gmail.com
---
John Macias (2):
wifi: ath11k: bound READY MAC address array reads
wifi: ath12k: bound READY MAC address array reads
drivers/net/wireless/ath/ath11k/wmi.c | 6 ++++++
drivers/net/wireless/ath/ath12k/wmi.c | 6 ++++++
2 files changed, 12 insertions(+)
---
base-commit: cd026e68fdbf88b9cc522b76c7a9d92c9a41f709
change-id: 20261015-rdy-mac-array-bounds-de70c7750217
Best regards,
--
John Macias <dencity7@gmail.com>
WARNING: multiple messages have this Message-ID (diff)
From: John Macias <dencity7@gmail.com>
To: Jeff Johnson <jjohnson@kernel.org>
Cc: linux-wireless@vger.kernel.org, ath11k@lists.infradead.org,
linux-kernel@vger.kernel.org, ath12k@lists.infradead.org,
John Macias <dencity7@gmail.com>
Subject: [PATCH ath-next v2 0/2] wifi: ath11k/ath12k: bound READY MAC address array reads
Date: Wed, 21 Oct 2026 23:42:36 -0700 [thread overview]
Message-ID: <20261021-rdy-mac-array-bounds-v2-0-cf7f45f868dd@gmail.com> (raw)
ath11k_wmi_tlv_rdy_parse() and ath12k_wmi_rdy_parse() copy one MAC
address per radio from the READY event's fixed-struct array after
checking only the count advertised in the fixed record, not the array
TLV length. A firmware READY event with a short array makes the copy
read past the end of the TLV value.
These patches check the array length first and fall back to the
driver's default per-radio addresses when it is too short.
Found while bringing up an IPQ8074 v1 device with older firmware; the
issue is not specific to that hardware. Verified with a userspace harness
around the unmodified parsers under AddressSanitizer. Compile tested
on ath-next (W=1). The ath11k change has also run on an IPQ8074 hw1.0
board on every boot since 16 Oct; its firmware sends a well-formed
array, so that covers the normal path only. The ath12k change is
compile tested only. Neither has been tested on hardware with a
malformed event.
Jeff, following your pointers on my earlier ath12k RX-ring RFC, these
carry a full-name sign-off, an Assisted-by tag, and state the testing
explicitly. This work was developed with AI assistance.
---
Changes in v2:
- Drop RFC.
- ath11k: note the hardware run and add a Tested-on tag; no code change.
- v1 was accidentally sent twice; apologies for the duplicate.
- Link to v1: https://patch.msgid.link/20261015-rdy-mac-array-bounds-v1-0-5de276b752a3@gmail.com
---
John Macias (2):
wifi: ath11k: bound READY MAC address array reads
wifi: ath12k: bound READY MAC address array reads
drivers/net/wireless/ath/ath11k/wmi.c | 6 ++++++
drivers/net/wireless/ath/ath12k/wmi.c | 6 ++++++
2 files changed, 12 insertions(+)
---
base-commit: cd026e68fdbf88b9cc522b76c7a9d92c9a41f709
change-id: 20261015-rdy-mac-array-bounds-de70c7750217
Best regards,
--
John Macias <dencity7@gmail.com>
next reply other threads:[~2026-10-22 6:42 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-22 6:42 John Macias via B4 Relay [this message]
2026-10-22 6:42 ` [PATCH ath-next v2 0/2] wifi: ath11k/ath12k: bound READY MAC address array reads John Macias
2026-10-22 6:42 ` [PATCH ath-next v2 1/2] wifi: ath11k: " John Macias via B4 Relay
2026-10-22 6:42 ` John Macias
2026-10-22 6:42 ` [PATCH ath-next v2 2/2] wifi: ath12k: " John Macias via B4 Relay
2026-10-22 6:42 ` John Macias
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=20261021-rdy-mac-array-bounds-v2-0-cf7f45f868dd@gmail.com \
--to=devnull+dencity7.gmail.com@kernel.org \
--cc=ath11k@lists.infradead.org \
--cc=ath12k@lists.infradead.org \
--cc=dencity7@gmail.com \
--cc=jjohnson@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-wireless@vger.kernel.org \
/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.