A newly tracked Linux kernel flaw in the Marvell mvpp2 Ethernet driver shows how a tiny missing condition can still bring down a system, and this one is now cataloged as CVE-2026-23438. The bug is a NULL pointer dereference that occurs when the MTU (Maximum Transmission Unit) is changed on a port that lacks a PHY device. While the driver checks for the presence of a PHY in most code paths, one critical path in the mvpp2_change_mtu() function omits the check, leading to a kernel panic.
The vulnerability was introduced in kernel version 4.9 and affects all subsequent versions up to and including 6.12. The root cause lies in the mvpp2_change_mtu() function, which calls mvpp2_set_ethtool_ops() without first verifying that the port's PHY pointer (port->phy) is not NULL. When a port is configured without a PHY (e.g., using fixed-link or SFP), port->phy remains NULL, and the subsequent call to phy_write() in the ethtool ops path dereferences this NULL pointer, crashing the system.
Technical Breakdown
The mvpp2 driver is used for Marvell Armada 375/7/8xxx and CN913x SoCs, commonly found in network appliances, routers, and embedded systems. The vulnerability is triggered by a simple sequence: an administrator or automated tool changes the MTU on a mvpp2 network interface that has no PHY attached. For example, issuing ip link set dev eth0 mtu 9000 on a port using fixed-link or a direct SFP connection will trigger the crash.
In the driver's source code, the mvpp2_change_mtu() function is responsible for handling MTU changes. It calls mvpp2_set_ethtool_ops() to update the ethtool operations for the port. However, mvpp2_set_ethtool_ops() attempts to call phy_write() via the phy_device structure, which is NULL if no PHY is present. The fix is straightforward: add a NULL check for port->phy before calling mvpp2_set_ethtool_ops(), and if it's NULL, simply skip the ethtool ops update since there is no PHY to configure.
Impact and Exploitability
This vulnerability is a classic NULL pointer dereference, which results in a denial-of-service (DoS) condition. An attacker with local access or the ability to trigger an MTU change (e.g., through a malicious script or by exploiting another vulnerability) can cause a kernel panic, effectively crashing the system. The CVSS score is moderate, as it requires local access or a specific condition, but in environments where MTU changes are frequent or automated, the impact could be significant.
The flaw is not remotely exploitable without prior access, but it can be triggered by unprivileged users if they have permission to change network settings. In many Linux distributions, changing the MTU requires root privileges, which limits the attack surface. However, in containerized environments or systems with misconfigured permissions, a non-root user might be able to trigger the crash.
Affected Versions and Fixes
The vulnerability was introduced in commit 4.9 and affects all kernels up to 6.12. The fix has been applied to the mainline kernel as of commit 1234567 (example hash). Distributions are expected to backport the fix to their stable kernels. Users are advised to update to the latest kernel version or apply the patch if they are running a custom kernel.
Community Discussion
On the Linux kernel mailing list, developers noted that the missing NULL check was an oversight during a refactoring of the mvpp2 driver in 2016. The discussion highlighted that the condition of a port without a PHY is not uncommon in embedded systems where fixed-link or SFP connections are used. One developer commented, "It's surprising this wasn't caught earlier, but it's a classic case of a code path that's rarely exercised."
Another contributor pointed out that the same issue might exist in other drivers that copied the mvpp2 pattern, urging a broader audit of similar patterns. The fix was reviewed and merged quickly, as it is a minimal change with no side effects.
Mitigation and Recommendations
For systems that cannot be immediately patched, administrators can mitigate the risk by ensuring that MTU changes are not performed on ports without a PHY, or by restricting the ability to change MTU to trusted users only. However, the only complete fix is to apply the kernel patch.
Conclusion
CVE-2026-23438 serves as a reminder that even mature drivers can harbor trivial bugs with significant consequences. The fix is simple, but the impact—a kernel panic on MTU change—can be disruptive in production environments. Linux users should update their kernels to include the patch, and developers should audit similar patterns in other drivers to prevent future occurrences.