CVE-2026-68338

net/packet: avoid fanout hook re-registration after unregister

State
Published
Severity
7.8 High
Published
Aug 10, 2026
Updated
Oct 19, 2026
Reserved
Jul 30, 2026

Read the record on cve.org

Description

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

net/packet: avoid fanout hook re-registration after unregister

packet_set_ring() temporarily detaches a socket from packet delivery while reconfiguring its ring. It records the previous running state, clears po->num, unregisters the protocol hook when needed, drops po->bind_lock, and later restores po->num and re-registers the hook from the saved was_running value.

That unlocked window can race with NETDEV_UNREGISTER. The notifier can observe the socket as not running, skip __unregister_prot_hook(), and invalidate the per-socket binding by setting po->ifindex to -1 and clearing po->prot_hook.dev. A one-member fanout group can still retain its shared fanout hook device pointer. When packet_set_ring() resumes, re-registering solely from the stale was_running state can re-add the fanout hook after the device has been unregistered.

Treat po->ifindex == -1 as an invalidated binding after reacquiring po->bind_lock. This is distinct from ifindex 0, the normal unbound/wildcard state: ifindex -1 marks an existing device binding that was invalidated when the device was unregistered. Restore po->num as before, but do not re-register the hook if device unregister already detached the socket.

Scores

CVSSScoreVectorSource
3.17.8 HighCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:HLinux

Weaknesses

  • CWE-362 Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition')

Affected Products

ProductVersions
LinuxLinux
  • dc99f600698dcac69b8f56dda9a8a00d645c5ffc to before acb40ebfa5c4d62f84339fcbf713f2a9fd033a71Affected
  • dc99f600698dcac69b8f56dda9a8a00d645c5ffc to before c820f4b7f2fa38f8769db0d0cefdd94e2721504dAffected
  • dc99f600698dcac69b8f56dda9a8a00d645c5ffc to before 4628efbdc7affd094181f5263e65c1062e31f15fAffected
  • dc99f600698dcac69b8f56dda9a8a00d645c5ffc to before 80ec024d53a05c60ad1d08968dcf745f10c1665cAffected
  • dc99f600698dcac69b8f56dda9a8a00d645c5ffc to before 0a052e0808e015e68144a9877e6ef42b952c49faAffected
  • dc99f600698dcac69b8f56dda9a8a00d645c5ffc to before 1bc55c29cd85818e9052f17deb287d5a11fb817fAffected
  • dc99f600698dcac69b8f56dda9a8a00d645c5ffc to before a885387dae7986a55bae5c77a15bdd447f64e9b9Affected
  • dc99f600698dcac69b8f56dda9a8a00d645c5ffc to before 50aff80475abd3533eef4320477037e6fcc6b56eAffected
LinuxLinux
  • 3.1Affected
  • before 3.1Not affected
  • 5.10.265 through 5.10.*Not affected
  • 5.15.216 through 5.15.*Not affected
  • 6.1.183 through 6.1.*Not affected
  • 6.6.148 through 6.6.*Not affected
  • 6.12.101 through 6.12.*Not affected
  • 6.18.42 through 6.18.*Not affected
  • 7.1.6 through 7.1.*Not affected
  • 7.2 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.