All vulnerabilities
CVE-2026-98796

Linux: net: ethernet: mtk_eth_soc: allocate dummy netdev sooner

Linux LinuxOperating systems
CVSS
NoneNot scored
ExploitationNo known exploitationNot in CISA KEV, which does not prove it is unexploitedCISA KEV
Exploit odds (EPSS)0.17%Chance of exploitation activity in the next 30 days, higher than 5% of CVEs. Scored 23 Oct 2026FIRST EPSS
Fixed in42001839e425b2564b7297be579073a13a8fddf6Also 82be3d08de9e14d5aed72377f051adb4f09fd540, 17eafd74de5a31e30361420a2e3ebf64186b77e5 and 1 moreCVE List
Published18 Oct 2026Updated 21 Oct 2026CVE List

What fixes it

  • 42001839e425b2564b7297be579073a13a8fddf6LinuxCVE List
  • 82be3d08de9e14d5aed72377f051adb4f09fd540LinuxCVE List
  • 17eafd74de5a31e30361420a2e3ebf64186b77e5LinuxCVE List
  • 6f0c2c4f5e7143eba75153ecc8af3a03f7b6a98bLinuxCVE List

A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.

Description

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

net: ethernet: mtk_eth_soc: allocate dummy netdev sooner

The RX rings and the shared NAPI are carried by an internal "dummy" netdev (eth->dummy_dev). mtk_probe() creates that dummy device, and adds the shared tx/rx NAPI to it, only after the MAC netdevs have been registered. That order has been there since the MT7623 support was added and leaves a window in which the netdevs are visible to the network core before the shared NAPI and the dummy device exist.

If anything brings the first netdev up during that window (e.g. netifd opening the WAN link the instant the interface is registered), the first-open path runs without them. On NETSYS v2 and later SoCs mtk_rx_alloc() -> __xdp_rxq_info_reg() then dereferences eth->dummy_dev == NULL:

WARNING: CPU: ... Missing net_device from driver

in net/core/xdp.c and mtk_open() fails with -ENODEV. On NETSYS v1 SoCs (MT7621/MT7622/MT7623/MT7629) there is no page pool, so the same open instead calls napi_enable() on a napi_struct that netif_napi_add() has not initialised yet and dereferences a NULL napi->dev.

Allocate the dummy netdev and add the shared tx/rx NAPI to it before the register_netdev() loop. Both the dummy-allocation failure and a register_netdev() failure now unwind through mtk_unreg_dev(), which unregisters the net_device notifiers and the netdevs registered so far, stopping a concurrently-opened netdev (ndo_stop) and its NAPI before the dummy carrier is freed.

A netdev that opened during the window can also have queued the frame-engine reset worker (via the tx watchdog or phylink), so the probe error path now cancels eth->pending_work before freeing the shared state, as mtk_cleanup() already does on remove.

Text from CVE List

Affected versions 12

  • Linuxaffected: 656e705243fd0c2864b89634ea16ed444ef64dc6 before efc91ab1d97bd991faf50baa0ead35029f341eb9CVE List
  • Linuxaffected: 656e705243fd0c2864b89634ea16ed444ef64dc6 before 42001839e425b2564b7297be579073a13a8fddf6CVE List
  • Linuxaffected: 656e705243fd0c2864b89634ea16ed444ef64dc6 before 82be3d08de9e14d5aed72377f051adb4f09fd540CVE List
  • Linuxaffected: 656e705243fd0c2864b89634ea16ed444ef64dc6 before 17eafd74de5a31e30361420a2e3ebf64186b77e5CVE List
  • Linuxaffected: 656e705243fd0c2864b89634ea16ed444ef64dc6 before 6f0c2c4f5e7143eba75153ecc8af3a03f7b6a98bCVE List
  • Linuxaffected: 4.6CVE List
  • Linuxunaffected: all versions before 4.6CVE List
  • Linuxunaffected: 6.6.160 through 6.6.*CVE List
  • Linuxunaffected: 6.12.113 through 6.12.*CVE List
  • Linuxunaffected: 6.18.56 through 6.18.*CVE List
  • Linuxunaffected: 7.2.10 through 7.2.*CVE List
  • Linuxunaffected: 7.3CVE List

References 5