CVE-2025-21650: net: hns3: fixed hclge_fetch_pf_reg accesses bar space out of bounds issue
In the Linux kernel, the following vulnerability has been resolved:
net: hns3: fixed hclge_fetch_pf_reg accesses bar space out of bounds issue
The TQP BAR space is divided into two segments. TQPs 0-1023 and TQPs
1024-1279 are in different BAR space addresses. However,
hclge_fetch_pf_reg does not distinguish the tqp space information when
reading the tqp space information. When the number of TQPs is greater
than 1024, access bar space overwriting occurs.
The problem of different segments has been considered during the
initialization of tqp.io_base. Therefore, tqp.io_base is directly used
when the queue is read in hclge_fetch_pf_reg.
The error message:
Unable to handle kernel paging request at virtual address ffff800037200000
pc : hclge_fetch_pf_reg+0x138/0x250 [hclge]
lr : hclge_get_regs+0x84/0x1d0 [hclge]
Call trace:
hclge_fetch_pf_reg+0x138/0x250 [hclge]
hclge_get_regs+0x84/0x1d0 [hclge]
hns3_get_regs+0x2c/0x50 [hns3]
ethtool_get_regs+0xf4/0x270
dev_ethtool+0x674/0x8a0
dev_ioctl+0x270/0x36c
sock_do_ioctl+0x110/0x2a0
sock_ioctl+0x2ac/0x530
__arm64_sys_ioctl+0xa8/0x100
invoke_syscall+0x4c/0x124
el0_svc_common.constprop.0+0x140/0x15c
do_el0_svc+0x30/0xd0
el0_svc+0x1c/0x2c
el0_sync_handler+0xb0/0xb4
el0_sync+0x168/0x180
Security readout for executives and security teams
Plain-English summary
A Linux network driver can access hardware memory outside the intended region when a device uses more than 1,024 queue pairs. The documented result is a kernel paging fault, which can crash or destabilize affected systems. Exposure requires the hns3/hclge driver, relevant hardware configuration, and an affected kernel build.
Executive priority
Treat this as a high-priority infrastructure patch where the affected driver and large queue configuration are present. Broad emergency action is not supported for systems lacking that hardware path. Ask platform teams to identify exposed hosts, confirm vendor-fixed kernels, and monitor for the documented kernel fault signature.
Technical view
The hclge_fetch_pf_reg function failed to account for two TQP BAR address segments. For TQP counts above 1,024, register retrieval could access outside the correct BAR space. The correction reads queues through the already segmented tqp.io_base address. The supplied CVSS is 7.8: local access, low privileges, no user interaction, and potentially high confidentiality, integrity, and availability impact.
Likely exposure
Likely exposure is limited to Linux systems using the hns3/hclge network driver with more than 1,024 TQPs. This is not presented as remotely exploitable. The bundled version representation is ambiguous, so administrators should confirm exact kernel builds and vendor backports against the CVE record rather than relying solely on version strings.
Exploitation context
The CVE is not listed in KEV, and the supplied sources do not report active exploitation or a public exploit. The CVSS vector describes a local, low-complexity path requiring low privileges. The documented trigger path involves retrieving device registers through ethtool and results in a kernel paging fault; stronger exploitation outcomes are not demonstrated.
Researcher notes
The evidence clearly identifies an out-of-bounds BAR access caused by incorrect TQP segment handling. The supplied trace demonstrates a kernel paging fault. Although the CVSS assigns high impact across confidentiality, integrity, and availability, the bundle does not demonstrate exploitation beyond the fault. Exact affected-version boundaries should be verified from the authoritative record and commit ancestry.
Mitigation direction
Update to a vendor kernel incorporating the referenced hns3 stable fix.
Check distribution guidance for build-specific backports and remediation status.
Prioritize systems using hns3/hclge with configurations exceeding 1,024 TQPs.
Limit unnecessary local access while affected systems await remediation.
Validation and detection
Inventory kernel builds and systems loading the hns3 or hclge modules.
Determine whether applicable network devices expose more than 1,024 TQPs.
Verify the installed kernel includes a referenced fix or vendor-equivalent backport.
Review kernel logs for paging faults containing hclge_fetch_pf_reg or hclge_get_regs.
Generated from the cited source records. This long-tail analysis has not been individually reviewed by a named human.
Potential ATT&CK relevance
Conservative CVE-to-ATT&CK context
These mappings and lookup hints may be relevant to the vulnerability behavior, CWE, affected product, or exposure path. Glexia-inferred context is not an official MITRE, ATT&CK, CWE, or CVE Program mapping.
ATT&CK lookup starting points
Use these exact CWE pages and searches to review the Glexia ATT&CK library from this CVE's weakness and description context.
cwe · low confidence lookup
CWE-787: Exact CWE lookup
Use the exact CWE identifier as the starting point before reviewing related ATT&CK behavior. Open the exact CWE lookup page first, then review the ATT&CK searches from that MITRE weakness context. This is a Glexia lookup hint, not an official ATT&CK mapping.
These fields come from the CVE record and ADP containers, not from Glexia's Take. They preserve time-varying source decisions such as CISA SSVC, KEV status, CVSS metrics, and provider references.
2CVSS vectors
3Timeline events
1ADP providers
3Source links
SSVC decision data
CISA-ADPCISA Coordinator
Timestamp
Version
2.0.3
Exploitation: noneAutomatable: noTechnical Impact: total
CVSS vector scores
2 official scores
We collect every scored CVSS vector available in the official CNA and ADP containers. When more than one version is present, the table keeps the source vectors side by side instead of collapsing them into the highest score.
CWE links open Glexia weakness intelligence pages with official CWE context, developer remediation guidance, and related CVE mappings.
CWE-787 · source CWE mapping
Out-of-bounds Write
Out-of-bounds Write represents a recurring weakness pattern that can create exploitable paths when design, validation, or implementation controls are missing.