CVE-2026-74398

ipv6: addrconf: bail out of dad_failure when state is no longer POSTDAD

State
Published
Severity
9.8 Critical
Published
Aug 15, 2026
Updated
Oct 16, 2026
Reserved
Aug 15, 2026

Read the record on cve.org

Description

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

ipv6: addrconf: bail out of dad_failure when state is no longer POSTDAD

addrconf_dad_failure() transitions ifp->state from DAD to POSTDAD via addrconf_dad_end(), which drops ifp->lock on return. The lock is re-acquired after net_info_ratelimited(). A concurrent ipv6_del_addr() can take the lock in that window, set ifp->state to DEAD and run list_del_rcu(&ifp->if_list).

addrconf_dad_failure() then overwrites DEAD with ERRDAD at errdad: and schedules a new dad_work. The work calls ipv6_del_addr() again, hitting the already-poisoned list entry:

general protection fault: 0000 [#1] SMP NOPTI CPU: 4 PID: 217 Comm: kworker/4:1 Workqueue: ipv6_addrconf addrconf_dad_work RIP: 0010:ipv6_del_addr+0xe9/0x280 RAX: dead000000000122 Call Trace: addrconf_dad_stop+0x113/0x140 addrconf_dad_work+0x28c/0x430 process_one_work+0x1eb/0x3b0 worker_thread+0x4d/0x400 kthread+0x104/0x140 ret_from_fork+0x35/0x40

Fold the addrconf_dad_end() logic into addrconf_dad_failure() under a single ifp->lock critical section. The STABLE_PRIVACY branch temporarily drops ifp->lock around address regeneration, so at lock_errdad: verify the state is still POSTDAD before transitioning to ERRDAD; bail out otherwise to avoid overwriting a state set by another path while the lock was released.

Scores

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

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • c15b1ccadb323ea50023e8f1cca2954129a62b51 to before 47b05836705b63dab93d9ac7c69a3a507375ef80Affected
  • c15b1ccadb323ea50023e8f1cca2954129a62b51 to before d21be7d051012c6b572fa4e3334443c250216f7bAffected
  • c15b1ccadb323ea50023e8f1cca2954129a62b51 to before 875c284c0f98b042bb97abad460f63a24c977f88Affected
  • c15b1ccadb323ea50023e8f1cca2954129a62b51 to before 8ed0ce9ea58d677d1bac92614ee5f60f8ea57363Affected
  • c15b1ccadb323ea50023e8f1cca2954129a62b51 to before 3bdc86d89fd6c6523753fa6f42fcfaf30ee699cbAffected
  • c15b1ccadb323ea50023e8f1cca2954129a62b51 to before b61af0268e3d1308c466bf0be5dced844eafc1efAffected
  • c15b1ccadb323ea50023e8f1cca2954129a62b51 to before e889aa99ad3ed48bb0ddcff6475b17542532d18bAffected
  • c15b1ccadb323ea50023e8f1cca2954129a62b51 to before 627ac78f2741e2ebd2225e2e953b6964a8a9182fAffected
  • 835b474b8f70fa68d68abffad37378e92f661802Affected
  • 3.10.105 to before 3.11Affected
LinuxLinux
  • 3.14Affected
  • before 3.14Not affected
  • 5.10.261 through 5.10.*Not affected
  • 5.15.212 through 5.15.*Not affected
  • 6.1.178 through 6.1.*Not affected
  • 6.6.145 through 6.6.*Not affected
  • 6.12.97 through 6.12.*Not affected
  • 6.18.40 through 6.18.*Not affected
  • 7.1.5 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.