# CVE-2026-98906: net: lan966x: restore RX state on reload failure


- **Severity:** Not scored
- **Exploited in the wild:** Not known
- **Fix available:** Yes
- **Published:** 23 Oct 2026
- **Updated:** 26 Oct 2026
- **Also known as:** AZL-110585, BELL-CVE-2026-98906, DEBIAN-CVE-2026-98906, GHSA-2fw9-6rfh-9q85, UBUNTU-CVE-2026-98906

## What is CVE-2026-98906?

CVE-2026-98906 is a vulnerability in Linux, published on 23 Oct 2026. 

### Official description

In the Linux kernel, the following vulnerability has been resolved:

net: lan966x: restore RX state on reload failure

lan966x_fdma_reload() backs up rx->page_pool and rx->fdma before
reallocating the RX resources for the new MTU. If the allocation fails,
the restore path puts these fields back before restarting RX.

However, the reload path also updates rx->page_order and rx->max_mtu
before calling lan966x_fdma_rx_alloc(). These fields are not restored on
failure, so RX can be restarted with the old pages, old FDMA state and
old page pool, but with the page geometry from the failed new MTU.

This can make the XDP path advertise a frame size derived from the new
page_order while the actual RX pages still come from the old allocation.
For example, after a failed reload to a jumbo MTU, xdp_init_buff() may be
called with a frame size larger than the restored RX pages.

lan966x_fdma_rx_alloc_page_pool() also registers the newly allocated page
pool with each port's XDP RXQ before fdma_alloc_coherent() is called. If
fdma_alloc_coherent() fails, the new page pool is destroyed, but the
rollback path does not restore the per-port XDP RXQ mem model
registration either.

Save and restore rx->page_order and rx->max_mtu, and restore the old page
pool registration for each port's XDP RXQ before RX is started again.
This keeps the restored RX state consistent after a failed reload.

## Which versions are affected by CVE-2026-98906?


## How do I fix CVE-2026-98906?

Upgrade to a fixed version.

## Is CVE-2026-98906 being exploited?

There is no known exploitation of CVE-2026-98906 in the wild and no public exploit code.

## Fix prompt for AI coding agents

```text
Check this codebase for CVE-2026-98906 and fix it if it is affected.

What it is: CVE-2026-98906 is a vulnerability in Linux, published on 23 Oct 2026. 
Exploitation: There is no known exploitation of CVE-2026-98906 in the wild and no public exploit code.

Affected product: Linux. No package-level version data is available, so check the vendor advisory linked from the reference page.

Task:
1. Search the dependency manifests and lockfiles (for example package.json, package-lock.json, requirements.txt, poetry.lock, uv.lock, pom.xml, build.gradle, go.mod, Cargo.lock, Gemfile.lock) and any Dockerfiles for the affected packages, including transitive dependencies.
2. If an affected version is in use, upgrade it to the fixed version for its release line with the project's package manager, so the lockfile is regenerated. Prefer the smallest upgrade that fixes it.
3. If there is no fix, or the upgrade would break the build, do not guess: explain the risk and the safest workaround instead.
4. Run the tests and summarise what changed and why.
5. If nothing in the project is affected, say so and change nothing.

Reference: https://insights.sbomify.com/CVE-2026-98906/ (Markdown: https://insights.sbomify.com/CVE-2026-98906/index.md)
```

## Sources

- CVE record: https://www.cve.org/CVERecord?id=CVE-2026-98906
- NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-98906
- OSV: https://osv.dev/vulnerability/CVE-2026-98906

---
From sbomify Insights: https://insights.sbomify.com/CVE-2026-98906/
Summaries are generated and may contain mistakes; the official description above is the record.
