CVE-2026-97573
📛 CVE Title
bnxt_en: Handle buffer allocation failure in bnxt_rx_ring_reset()
Description
In the Linux kernel, the following vulnerability has been resolved: bnxt_en: Handle buffer allocation failure in bnxt_rx_ring_reset() bnxt_rx_ring_reset() frees the ring buffers and then reallocates them, ignoring the result. bnxt_alloc_one_rx_ring() can fail in bnxt_alloc_one_tpa_info_data(), which returns -ENOMEM on the first failed allocation and leaves the remaining rxr->rx_tpa[] entries zeroed. The error isn't propagated up, so the loop in bnxt_rx_ring_reset continues and at the end the code re-enables TPA with partially unallocated rx_tpa array. This means that when the agg_id from hardware is mapped to a SW index in rxr->rx_tpa[], an uninitialized slot can be chosen which would hand a zero DMA address to the device. Fix this by falling back to a global reset, which is what the existing code already does when other functions fail, but unlike the other failure cases this particular failure has to return because TPA can't be re-enabled since the allocation failed.
Overview
- State
- PUBLISHED
- Assigner (CNA)
- Linux
- CVSS severity
- HIGH
- CVSS score
- 8.1 / 10
- CVSS vector
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H- Effective score
- 8.1 / 10 HIGH source: CNA overview
- CWE(s)
- —
- Reserved
- 2026-09-24
- Published
- 2026-09-25 10:21 UTC
- Last updated
- 2026-09-25 14:41 UTC
- Source
- https://raw.githubusercontent.com/CVEProject/cvelistV5/main/cves/2026/97xxx/CVE-2026-97573.json
- Linked Threat
- CVE-2026-97573 — bnxt_en: Handle buffer allocation failure in bnxt_rx_ring_reset()
NVD triage scoring NVD CVE 2.0
Layer NVD adds on top of the CNA's CVE record — published / last-modified timestamps, exploitability / impact subscores, and the FIRST.org EPSS probability that this CVE will be exploited in the wild in the next 30 days.
- NVD published
- 2026-09-25 11:17:08 UTC
- NVD last modified
- 2026-09-25 15:17:59 UTC
- NVD CVSS v3.1
- 8.1 / 10 HIGH source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
- NVD CVSS vector
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H- Exploitability subscore
- 2.2 / 10
- Impact subscore
- 5.9 / 10
NVD / KEV / EPSS data refreshed 2026-09-26 04:31 UTC. Re-run the 🛰 Backfill from NVD button above to refresh.
Affected products (2)
| Vendor | Product | Versions | Platforms |
|---|---|---|---|
| Linux | Linux |
8fbf58e17dce8f250dda9ad6b0a49b3041f0af14 (affected),
8fbf58e17dce8f250dda9ad6b0a49b3041f0af14 (affected),
8fbf58e17dce8f250dda9ad6b0a49b3041f0af14 (affected),
8fbf58e17dce8f250dda9ad6b0a49b3041f0af14 (affected)
|
— |
| Linux | Linux |
5.10 (affected),
0 (unaffected),
6.12.111 (unaffected),
6.18.53 (unaffected),
7.2.7 (unaffected),
7.3-rc3 (unaffected)
|
— |
Vendor references (4)
References embedded in the original CVE record by the assigning CNA.
Web references (0)
DuckDuckGo results ranked by threat-intel / vendor advisory domains. Generated by the 🔎 Find references (web) button above — same flow as the Remediations search.
No web references attached yet.
NVD-tagged references (4)
Reference list NVD curates from the CNA record, vendor advisories, and third-party reports. The tag chips below are NVD's analyst-assigned categories.
- https://git.kernel.org/stable/c/1a3670b6a6b5679fe56c5890157b344f091e64f8 416baaa9-dc9f-4396-8d5f-8c081fb06d67
- https://git.kernel.org/stable/c/4a17c73c83798c2fa9c7920ad5a98803adce3e01 416baaa9-dc9f-4396-8d5f-8c081fb06d67
- https://git.kernel.org/stable/c/8b2fd5c0aeda935294159206af9d6179282d425a 416baaa9-dc9f-4396-8d5f-8c081fb06d67
- https://git.kernel.org/stable/c/961e2a17c5e3559b3f8654d2daabdd25a42e770a 416baaa9-dc9f-4396-8d5f-8c081fb06d67
AI Forensic Analysis
Only Available for Registered Users. Sign in to view.
Raw JSON
The full cvelistV5 record. Download as CVE-2026-97573.json.
{
"containers": {
"cna": {
"affected": [
{
"defaultStatus": "unaffected",
"product": "Linux",
"programFiles": [
"drivers/net/ethernet/broadcom/bnxt/bnxt.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"lessThan": "1a3670b6a6b5679fe56c5890157b344f091e64f8",
"status": "affected",
"version": "8fbf58e17dce8f250dda9ad6b0a49b3041f0af14",
"versionType": "git"
},
{
"lessThan": "4a17c73c83798c2fa9c7920ad5a98803adce3e01",
"status": "affected",
"version": "8fbf58e17dce8f250dda9ad6b0a49b3041f0af14",
"versionType": "git"
},
{
"lessThan": "8b2fd5c0aeda935294159206af9d6179282d425a",
"status": "affected",
"version": "8fbf58e17dce8f250dda9ad6b0a49b3041f0af14",
"versionType": "git"
},
{
"lessThan": "961e2a17c5e3559b3f8654d2daabdd25a42e770a",
"status": "affected",
"version": "8fbf58e17dce8f250dda9ad6b0a49b3041f0af14",
"versionType": "git"
}
]
},
{
"defaultStatus": "affected",
"product": "Linux",
"programFiles": [
"drivers/net/ethernet/broadcom/bnxt/bnxt.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"status": "affected",
"version": "5.10"
},
{
"lessThan": "5.10",
"status": "unaffected",
"version": "0",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.12.*",
"status": "unaffected",
"version": "6.12.111",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.18.*",
"status": "unaffected",
"version": "6.18.53",
"versionType": "semver"
},
{
"lessThanOrEqual": "7.2.*",
"status": "unaffected",
"version": "7.2.7",
"versionType": "semver"
},
{
"lessThanOrEqual": "*",
"status": "unaffected",
"version": "7.3-rc3",
"versionType": "original_commit_for_fix"
}
]
}
],
"cpeApplicability": [
{
"nodes": [
{
"cpeMatch": [
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.12.111",
"versionStartIncluding": "5.10",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.18.53",
"versionStartIncluding": "5.10",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "7.2.7",
"versionStartIncluding": "5.10",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "7.3-rc3",
"versionStartIncluding": "5.10",
"vulnerable": true
}
],
"negate": false,
"operator": "OR"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\nbnxt_en: Handle buffer allocation failure in bnxt_rx_ring_reset()\n\nbnxt_rx_ring_reset() frees the ring buffers and then reallocates them,\nignoring the result.\n\nbnxt_alloc_one_rx_ring() can fail in bnxt_alloc_one_tpa_info_data(), which\nreturns -ENOMEM on the first failed allocation and leaves the remaining\nrxr->rx_tpa[] entries zeroed.\n\nThe error isn't propagated up, so the loop in bnxt_rx_ring_reset\ncontinues and at the end the code re-enables TPA with partially\nunallocated rx_tpa array.\n\nThis means that when the agg_id from hardware is mapped to a SW index in\nrxr->rx_tpa[], an uninitialized slot can be chosen which would hand a\nzero DMA address to the device.\n\nFix this by falling back to a global reset, which is what the existing\ncode already does when other functions fail, but unlike the other\nfailure cases this particular failure has to return because TPA can't\nbe re-enabled since the allocation failed."
}
],
"metrics": [
{
"cvssV3_1": {
"baseScore": 8.1,
"baseSeverity": "HIGH",
"vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H",
"version": "3.1"
},
"scenarios": [
{
"lang": "en",
"value": "AV:N - The fixed function bnxt_rx_ring_reset() is a driver error path with no malformed input. What it damages is received data: bnxt_tpa_start() hands the NIC a stale rx_tpa[] mapping, and the NIC DMAs packet bytes sent by a remote host into that freed buffer. The remote peer supplies the data that gets written, so the vector is Network.\nAC:H - Two things must happen together. A pre-P5 chip must hit an RX buffer error, cons mismatch or ring-monitor event that schedules the per-ring reset, and the GFP_KERNEL refill in bnxt_alloc_one_tpa_info_data() must fail under memory pressure. A remote sender cannot force that allocation failure.\nPR:N - No authentication is involved. Any host that can send TCP traffic that the NIC aggregates with TPA (hardware GRO/LRO) fills the stale buffers and can also generate the traffic that leads to RX buffer errors.\nUI:N - No user action is needed. The reset runs from the bnxt sp_task workqueue, and the bad TPA slot is used as soon as TPA_START completions arrive.\nS:U - The corruption hits kernel memory on the host that owns the NIC, which is the same authority as the driver. No VM or other security boundary is crossed.\nC:H - bnxt_free_one_tpa_info_data() clears tpa_info->data but leaves tpa_info->mapping stale. The NIC then writes into a page returned to page_pool that can be reused, and a reused buffer carrying other data can end up delivered as the next RX packet.\nI:H - The device DMA-writes TCP payload bytes chosen by the remote sender into freed memory (bnxt_tpa_start() puts the stale mapping into rx_bd_haddr). That is a write into memory the kernel may have reused, with attacker-chosen contents.\nA:H - The NULL tpa_info->data is moved into rx_buf_ring by bnxt_tpa_start(). When that buffer is consumed, the RX path dereferences NULL, and on top of that the stray DMA corrupts memory, so the kernel crashes."
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-09-25T14:41:17.143Z",
"orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"shortName": "Linux"
},
"references": [
{
"url": "https://git.kernel.org/stable/c/1a3670b6a6b5679fe56c5890157b344f091e64f8"
},
{
"url": "https://git.kernel.org/stable/c/4a17c73c83798c2fa9c7920ad5a98803adce3e01"
},
{
"url": "https://git.kernel.org/stable/c/8b2fd5c0aeda935294159206af9d6179282d425a"
},
{
"url": "https://git.kernel.org/stable/c/961e2a17c5e3559b3f8654d2daabdd25a42e770a"
}
],
"title": "bnxt_en: Handle buffer allocation failure in bnxt_rx_ring_reset()",
"x_generator": {
"engine": "bippy-1.2.0"
}
}
},
"cveMetadata": {
"assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"assignerShortName": "Linux",
"cveId": "CVE-2026-97573",
"datePublished": "2026-09-25T10:21:57.443Z",
"dateReserved": "2026-09-24T16:01:01.156Z",
"dateUpdated": "2026-09-25T14:41:17.143Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}