Re: [PATCH net v4 4/4] ipv6: do not restart DAD for a dead ifaddr
From: Ido Schimmel
Date: Thu Oct 15 2026 - 10:39:20 EST
On Thu, Oct 15, 2026 at 02:06:51PM +0900, Daehyeon Ko wrote:
> addrconf_dad_failure() can create a stable-privacy replacement without
> RTNL. After ipv6_add_addr() publishes it, addrconf_ifdown() can mark the
> new ifaddr DEAD, clear its route, and unlink it before the recovery path
> takes ifp2->lock.
>
> The recovery path then unconditionally changes the state back to PREDAD
> and queues delayed DAD work. The MTU teardown path can leave IF_READY
> set. For an optimistic address, addrconf_dad_begin() can consequently
> pass the cleared NULL route to ip6_ins_rt().
>
> This follow-on was found by source review and was not separately
> triggered at runtime.
>
> The new ifaddr is already initialized in PREDAD. Under ifp2->lock, record
> the retry and queue DAD only if teardown has not changed the state to
> DEAD. If teardown wins after this check, the work observes DEAD and exits
> without reviving the address.
>
> This complements the existing lock_errdad check that preserves the original
> ifaddr's DEAD state after the same function reacquires its lock.
>
> Fixes: 5f40ef77adb2 ("ipv6: do retries on stable privacy addresses")
> Cc: stable@xxxxxxxxxxxxxxx
> Reported-by: Sashiko <netdev-bot+sashiko@xxxxxxxxxx>
> Closes: https://lore.kernel.org/r/179161099408.434549.14449036924552933828@xxxxxxxxxx
> Link: https://lore.kernel.org/r/20260513025509.3776405-1-lilinmao@xxxxxxxxxx
> Assisted-by: LLM
> Signed-off-by: Daehyeon Ko <4ncienth@xxxxxxxxx>
Same comment as on the previous patch. My diff [1] was simpler and your
commit message admits that it's fine:
"If teardown wins after this check, the work observes DEAD and exits
without reviving the address"
Reviewed-by: Ido Schimmel <idosch@xxxxxxxxxx>
[1] https://lore.kernel.org/netdev/20261012151316.GA798355@shredder/