Cloudanix VulnDB

CVE-2026-98906

None

CVSS

—

EPSS

0.2%

Published

Oct 23, 2026

CISA due date

—

Cloudanix analysis

Schedule a fix SSVC: Track

A bug in a specific Ethernet driver inside Linux can leave the system in a confused state when network settings are changed, potentially causing crashes or memory errors on devices that use advanced packet processing.

Exploitation
Local Privilege
Attacker needs
Low Privilege
Complexity
Moderate
Impact
Denial Of Service
Component
OS kernel
Class
Memory Corruption
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

Failure to restore rx->page_order, rx->max_mtu and per-port XDP RXQ page-pool registrations after lan966x_fdma_rx_alloc() fails leaves the driver running with mismatched page geometry; XDP paths then advertise frame sizes derived from the attempted MTU while actual RX pages remain from the prior allocation, enabling out-of-bounds accesses or memory corruption in the XDP fast path.

Why it matters to the business

Systems using the lan966x driver with XDP enabled can experience kernel crashes, packet drops or memory corruption during MTU changes; the two-day-old disclosure and lack of known public exploits keep immediate operational risk low, but any device relying on this driver for high-performance networking must be updated promptly to avoid future stability or security incidents.

How an attack unfolds

An attacker with the ability to trigger repeated MTU reloads (for example via privileged network configuration or adjacent network activity) forces allocation failures inside lan966x_fdma_reload(); the incomplete rollback leaves inconsistent XDP metadata, after which a subsequent XDP program or normal RX processing dereferences or writes beyond the bounds of the restored pages.

How to fix it

Upgrade to a Linux kernel containing the referenced fix that saves and restores page_order, max_mtu and the per-port XDP RXQ page-pool registrations before restarting RX; apply the vendor-supplied kernel package for the affected distribution as soon as it becomes available.

How to confirm the fix worked

After patching, confirm the lan966x driver version contains the save/restore logic for page_order, max_mtu and XDP RXQ registrations; exercise MTU changes that previously triggered allocation failures and verify that XDP frame sizes remain consistent with allocated RX pages and no warnings or crashes occur.

Typical attack path

  1. Obtain privileges or network position needed to change interface MTU or trigger driver reload
  2. Induce allocation failure during lan966x_fdma_rx_alloc() for the new MTU
  3. Observe that rx->page_order / max_mtu and XDP RXQ registrations are not rolled back
  4. Activate or continue XDP traffic that uses the advertised but incorrect frame size
  5. Trigger out-of-bounds read/write or kernel panic in the XDP path

How to detect it

Search kernel logs for lan966x warnings or stack traces referencing fdma_reload, page_pool or xdp_init_buff around the time of MTU changes; inspect for unexpected XDP frame-size mismatches or page-order warnings emitted by the driver.

What your security team should do

  • Prioritize kernel updates for all systems exposing the lan966x driver, especially those using XDP
  • Monitor upstream stable and distribution kernel changelogs for the exact commit that restores the missing fields
  • Temporarily disable XDP on lan966x interfaces if MTU reconfiguration is frequent and patching is delayed
  • Include lan966x driver reload paths in regression test suites for future kernel updates

The record

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.

Affected packages

Ecosystem Package Introduced Fixed