← Back to CVE List
CVE-2026-90398NVD
Vulnerability Summary
In the Linux kernel, the following vulnerability has been resolved:
wifi: ath11k: fix stride mismatch in mac_phy_caps_parse()
Currently, in ath11k_wmi_tlv_mac_phy_caps_parse(), kcalloc() sizes the
mac_phy_caps buffer as tot_phy_id * len, where len is clamped to
min(firmware_len, sizeof(struct wmi_mac_phy_capabilities)). The subsequent
memcpy() destination advances by sizeof(full struct) per slot via C
pointer arithmetic, not by the clamped len. When firmware sends short
TLVs, the second and later slots are written past the end of the
allocation.
The reader in ath11k_pull_mac_phy_cap_svc_ready_ext() also indexes the
buffer with full-struct pointer arithmetic, so the allocation must match
that stride.
Fix by using kzalloc_objs(), which derives the element size from the
pointer type, making allocation size and pointer stride provably
consistent regardless of what len the firmware provides.
Compile tested only.
wifi: ath11k: fix stride mismatch in mac_phy_caps_parse()
Currently, in ath11k_wmi_tlv_mac_phy_caps_parse(), kcalloc() sizes the
mac_phy_caps buffer as tot_phy_id * len, where len is clamped to
min(firmware_len, sizeof(struct wmi_mac_phy_capabilities)). The subsequent
memcpy() destination advances by sizeof(full struct) per slot via C
pointer arithmetic, not by the clamped len. When firmware sends short
TLVs, the second and later slots are written past the end of the
allocation.
The reader in ath11k_pull_mac_phy_cap_svc_ready_ext() also indexes the
buffer with full-struct pointer arithmetic, so the allocation must match
that stride.
Fix by using kzalloc_objs(), which derives the element size from the
pointer type, making allocation size and pointer stride provably
consistent regardless of what len the firmware provides.
Compile tested only.
CVSS v3.1 Base Metrics — Score 8.4 (HIGH)
Attack VectorLocal
Attack ComplexityLow
Privileges RequiredNone
User InteractionNone
ScopeUnchanged
ConfidentialityHigh
IntegrityHigh
AvailabilityHigh
Affected & Patched Versions
- Linux Linux >= 5b90fc760db5a969ed26d70f8e62c91915f012bd and < bbb3b3334a9ed850c5b332eedea107796e691237
- Linux Linux >= 5b90fc760db5a969ed26d70f8e62c91915f012bd and < 75185e2b214e842b7e0af29e5d1fef155662b8b1
- Linux Linux >= 5b90fc760db5a969ed26d70f8e62c91915f012bd and < acff2713c3212ade15051e7b421f15c89927e70f
- Linux Linux >= 5b90fc760db5a969ed26d70f8e62c91915f012bd and < 7a246c72132eb943b5844ba79dad597b47429dba
- Linux Linux >= 5.6
- Linux Linux bbb3b3334a9ed850c5b332eedea107796e691237
- Linux Linux 75185e2b214e842b7e0af29e5d1fef155662b8b1
- Linux Linux acff2713c3212ade15051e7b421f15c89927e70f
- Linux Linux 7a246c72132eb943b5844ba79dad597b47429dba