CVE-2026-23438
Medium · 5.5CVSS
5.5
EPSS
0.1%
Published
Apr 3, 2026
CISA due date
—
Cloudanix analysis
A bug in certain network hardware drivers can let a logged-in user crash the whole computer by changing a network setting.
- Exploitation
- Local Privilege
- Attacker needs
- Low Privilege
- Complexity
- Low
- Impact
- Denial Of Service
- Component
- OS kernel
- Class
- Memory Corruption
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
NULL pointer dereference in mvpp2_bm_switch_buffers when priv->cm3_base is NULL and global_tx_fc guard is missing, triggered by buffer pool mode switch on MTU change crossing jumbo threshold, resulting in kernel panic via readl on address 0.
Why it matters to the business
Local users can trigger kernel crashes causing system reboots, service interruption, and potential loss of in-flight network data on Marvell mvpp2-equipped devices; low exploitability limits widespread impact but requires urgent attention on affected Linux deployments.
How an attack unfolds
A local attacker invokes dev_set_mtu with a value crossing the jumbo threshold on an mvpp2 interface lacking CM3 SRAM in device tree; this reaches mvpp2_bm_switch_buffers without the global_tx_fc check, dereferences NULL cm3_base through mvpp2_cm3_read, and panics the kernel.
How to fix it
Apply the upstream fix that adds priv->global_tx_fc guards around mvpp2_bm_pool_update_priv_fc calls inside mvpp2_bm_switch_buffers; rebuild and deploy the patched kernel; alternatively ensure CM3 SRAM is always present in device tree for mvpp2 nodes.
How to confirm the fix worked
Confirm the guard condition exists in mvpp2_bm_switch_buffers source; test by performing MTU changes across jumbo threshold on hardware without CM3 SRAM and verify no NULL dereference occurs; monitor kernel logs for absence of the reported call trace.
Typical attack path
- Gain local shell or user context on affected Linux system
- Identify mvpp2 network interface
- Execute ip link set dev <if> mtu <jumbo-value>
- Trigger kernel NULL dereference and panic
How to detect it
Search kernel logs and dmesg for the exact oops signature including readl+0x0, mvpp2_cm3_read, mvpp2_bm_pool_update_priv_fc, mvpp2_bm_switch_buffers, and mvpp2_change_mtu; correlate with recent MTU change events via audit or netlink logs.
- Unable to handle kernel NULL pointer dereference at virtual address 0000000000000000
- mvpp2_bm_pool_update_priv_fc+0x94/0xd8
- mvpp2_bm_switch_buffers.isra.0+0x80/0x1c0
- mvpp2_change_mtu+0x140/0x380
What your security team should do
- Patch Linux kernel to include the global_tx_fc guard immediately on all mvpp2 systems
- Restrict local user ability to change MTU on affected interfaces until patched
- Audit device trees for presence of CM3 SRAM entry on cp11x platforms
- Monitor EPSS trend and kernel mailing list for backports
The record
In the Linux kernel, the following vulnerability has been resolved: net: mvpp2: guard flow control update with global_tx_fc in buffer switching mvpp2_bm_switch_buffers() unconditionally calls mvpp2_bm_pool_update_priv_fc() when switching between per-cpu and shared buffer pool modes. This function programs CM3 flow control registers via mvpp2_cm3_read()/mvpp2_cm3_write(), which dereference priv->cm3_base without any NULL check. When the CM3 SRAM resource is not present in the device tree (the third reg entry added by commit 60523583b07c ("dts: marvell: add CM3 SRAM memory to cp11x ethernet device tree")), priv->cm3_base remains NULL and priv->global_tx_fc is false. Any operation that triggers mvpp2_bm_switch_buffers(), for example an MTU change that crosses the jumbo frame threshold, will crash: Unable to handle kernel NULL pointer dereference at virtual address 0000000000000000 Mem abort info: ESR = 0x0000000096000006 EC = 0x25: DABT (current EL), IL = 32 bits pc : readl+0x0/0x18 lr : mvpp2_cm3_read.isra.0+0x14/0x20 Call trace: readl+0x0/0x18 mvpp2_bm_pool_update_fc+0x40/0x12c mvpp2_bm_pool_update_priv_fc+0x94/0xd8 mvpp2_bm_switch_buffers.isra.0+0x80/0x1c0 mvpp2_change_mtu+0x140/0x380 __dev_set_mtu+0x1c/0x38 dev_set_mtu_ext+0x78/0x118 dev_set_mtu+0x48/0xa8 dev_ifsioc+0x21c/0x43c dev_ioctl+0x2d8/0x42c sock_ioctl+0x314/0x378 Every other flow control call site in the driver already guards hardware access with either priv->global_tx_fc or port->tx_fc. mvpp2_bm_switch_buffers() is the only place that omits this check. Add the missing priv->global_tx_fc guard to both the disable and re-enable calls in mvpp2_bm_switch_buffers(), consistent with the rest of the driver.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| openSUSE:Leap 16.0 | dtb-aarch64 | 0 | 6.12.0-160000.35.1 |
| openSUSE:Leap 16.0 | kernel-64kb | 0 | 6.12.0-160000.35.1 |
| openSUSE:Leap 16.0 | kernel-azure | 0 | 6.12.0-160000.35.1 |
| openSUSE:Leap 16.0 | kernel-default | 0 | 6.12.0-160000.35.1 |
| openSUSE:Leap 16.0 | kernel-default-base | 0 | 6.12.0-160000.35.1.160000.2.16 |
| openSUSE:Leap 16.0 | kernel-docs | 0 | 6.12.0-160000.35.1 |
| openSUSE:Leap 16.0 | kernel-kvmsmall | 0 | 6.12.0-160000.35.1 |
| openSUSE:Leap 16.0 | kernel-obs-build | 0 | 6.12.0-160000.35.1 |
| openSUSE:Leap 16.0 | kernel-obs-qa | 0 | 6.12.0-160000.35.1 |
| openSUSE:Leap 16.0 | kernel-rt | 0 | 6.12.0-160000.35.1 |
| openSUSE:Leap 16.0 | kernel-source | 0 | 6.12.0-160000.35.1 |
| openSUSE:Leap 16.0 | kernel-syms | 0 | 6.12.0-160000.35.1 |
| openSUSE:Leap 16.0 | kernel-zfcpdump | 0 | 6.12.0-160000.35.1 |
Related vulnerabilities
- CVE-2026-46317 In the Linux kernel, the following vulnerability has been resolved: KVM: arm64: Reassign… Also affects dtb-aarch64
- CVE-2026-46316 In the Linux kernel, the following vulnerability has been resolved: KVM: arm64: vgic-its… Also affects dtb-aarch64
- CVE-2026-46181 In the Linux kernel, the following vulnerability has been resolved: RDMA/mlx4: Fix… Also affects dtb-aarch64
- CVE-2026-46176 In the Linux kernel, the following vulnerability has been resolved: RDMA/mlx5: Fix error… Also affects dtb-aarch64
- CVE-2026-46159 In the Linux kernel, the following vulnerability has been resolved: btrfs: fix… Also affects dtb-aarch64
- CVE-2026-46114 In the Linux kernel, the following vulnerability has been resolved: RDMA/rxe: Reject… Also affects dtb-aarch64
- CVE-2026-46090 In the Linux kernel, the following vulnerability has been resolved: ALSA: aloop: Fix peer… Also affects dtb-aarch64
- CVE-2026-46094 In the Linux kernel, the following vulnerability has been resolved: ext4: fix bounds… Also affects dtb-aarch64