CVE-2026-98922: net: emac: move setting of netops to fix crash

Published Oct 23, 2026
·
Updated

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

net: emac: move setting of netops to fix crash

fixes the following crash on driver initialization:

|BUG: Kernel NULL pointer dereference on read at 0x00000158 |Faulting instruction address: 0xc0566b40 |Oops: Kernel access of bad area, sig: 11 [#1] |BE PAGESIZE=4K PowerPC 44x Platform |Modules linked in: |CPU: 0 UID: 0 PID: 1 Comm: swapper/0 Tainted: GW 7.3.0-rc3+ #1 |Tainted: [W]=WARN |Hardware name: MyBook Live APM821XX 0x12c41c83 PowerPC 44x Platform |NIP: c0566b40 LR: c05648f8 CTR: c04c1e9c |REGS: c1053a20 TRAP: 0300 Tainted: GW (7.3.0-rc3+) |MSR: 0002b000 <CE,EE,FP,ME> CR: 24008808 XER: 00000000 |DEAR: 00000158 ESR: 00000000 |GPR00: c05648f8 c1053b10 c1063600 c1030000 c5ab3000 00000000 [...] |GPR08: 00000002 00000000 00000000 c1053b40 84002808 00000000 [...] |GPR16: cfffd210 00000002 c0beafcc cfffc960 00000000 c1030644 [...] |GPR24: c0beafbc c1037000 00000000 0000000a 00000000 c1030000 [...] |NIP [c0566b40] phylinktopoaddphy+0x2c/0x1d0 |LR [c05648f8] phyattachdirect+0x1a4/0x368 |Call Trace: |[c1053b10] [c0811e04] klistput+0x54/0xb4 (unreliable) |[c1053b40] [c05648f8] phyattachdirect+0x1a4/0x368 |[c1053b70] [c0564ae8] phyconnectdirect+0x2c/0x60 |[c1053b90] [c056c7a8] ofphyconnect+0x50/0x74 |[c1053bc0] [c0572a88] emacprobe+0xd50/0x119c |[c1053c90] [c04cb770] platformprobe+0x74/0xa4 |[c1053cb0] [c04c8f08] reallyprobe+0x120/0x2b0 |[c1053cd0] [c04c9254] driverprobedevice+0x1bc/0x1fc |[c1053d00] [c04c9334] driverprobedevice+0x38/0xa8 |[c1053d30] [c04c9560] driverattach+0xf4/0x10c |[c1053d50] [c04c6af8] busforeachdev+0x68/0xd0 |[c1053d90] [c04c7c34] busadddriver+0xcc/0x1ec |[c1053dc0] [c04c9f6c] driverregister+0xcc/0x110 |[c1053de0] [c0aa3f40] emacinit+0x1c4/0x200

This bug showed up starting with v7.3-rc1. At the NIP in phylinktopoaddphy() is a netdevneedopslock() check. This was added by the following commit ded86da4bbb7 ("net: ethtool: relax ethnlreqgetphydev() locking assertion")

The bug shows up because at the time ofphyconnect() was called, the netdevops were not yet determined. My fix is to move the code that sets netdevops+commac.ops+ethtoolops further up as emacinitconfig() derives that by looking at the device-tree and sets the required dev->phymode accordingly.

During review, the Sashiko bot's AI stated that the commac assignment became a dead store. Great catch! To keep the original behavior as-is, one mentioned option "set dev->commac.ops = &emaccommacops only in the non-gige case?" sounded like a great plan. So the dev->commac.ops assignment for the non-gige-case moves into the else block.

This patch was tested on a WD MyBook Live (RGMII). the device now works again.

Affected Software

1 affected component
Linux Linux kernel>=7.3-rc1

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Configuration

    Move the dev->commac.ops = &emac_commac_ops assignment into the non-gige else block so it is not set before netdev_ops are determined.

    Linux kernel net/emac driver dev->commac.ops assignment = Assign &emac_commac_ops only in the non-gige else block

Event History

Oct 23, 2026
CVE Published
via MITRE·12:03 PM
Data Sourced
via MITRE·12:03 PM
Description

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203