diff options
| author | Jakub Kicinski <kuba@kernel.org> | 2026-10-20 12:25:33 -0700 |
|---|---|---|
| committer | Jakub Kicinski <kuba@kernel.org> | 2026-10-20 12:25:33 -0700 |
| commit | 4321ec1c52f1e7e7faf135aa08c5c09c89d8053a (patch) | |
| tree | a1847cc6a5bea64dd2251ceb5dd5d8576e3fbbb0 /include/linux/timerqueue.h | |
| parent | 0df412012a26389582b120844d098e1e961f10a6 (diff) | |
| parent | ffb668669ce4144347973d8b2fad449e9be0563d (diff) | |
Merge branch 'ipv6-fix-address-publication-races-with-addrconf_ifdown'
Daehyeon Ko says:
====================
ipv6: fix address publication races with addrconf_ifdown
The first patch removes each non-kept ifaddr from the address hash during
the per-device list cleanup. This prevents addrconf_ifdown() from freeing
a captured object that a late publisher left linked in the hash.
The second patch serializes hash and device-list publication with dead
device teardown. The cleanup patch is now first, so the newly atomic
publisher cannot create a captured-but-still-hashed intermediate state.
The third patch initializes a temporary address's public-ifaddr reference
and both timestamps before publication. No lifetime update can observe a
partially initialized relationship.
The fourth patch prevents stable-privacy DAD recovery from changing a
DEAD replacement address back to PREDAD and queueing work after teardown
has cleared its route.
The original deterministic test used a direct internal caller, kprobes and
atomic rendezvous at existing instruction boundaries. A real RA separately
reached ipv6_add_addr() with can_block=false. No new kernel build or
runtime test was run for v4. Validation used source review, strict
checkpatch and multi-tree apply tests.
====================
Link: https://patch.msgid.link/20261015050651.1841557-1-4ncienth@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'include/linux/timerqueue.h')
0 files changed, 0 insertions, 0 deletions
