• Marcus Huewe's avatar
    ipv6: addrconf: fix generation of new temporary addresses · d385ed7a
    Marcus Huewe authored
    
    [ Upstream commit a11a7f71 ]
    
    Under some circumstances it is possible that no new temporary addresses
    will be generated.
    
    For instance, addrconf_prefix_rcv_add_addr() indirectly calls
    ipv6_create_tempaddr(), which creates a tentative temporary address and
    starts dad. Next, addrconf_prefix_rcv_add_addr() indirectly calls
    addrconf_verify_rtnl(). Now, assume that the previously created temporary
    address has the least preferred lifetime among all existing addresses and
    is still tentative (that is, dad is still running). Hence, the next run of
    addrconf_verify_rtnl() is performed when the preferred lifetime of the
    temporary address ends. If dad succeeds before the next run, the temporary
    address becomes deprecated during the next run, but no new temporary
    address is generated.
    
    In order to fix this, schedule the next addrconf_verify_rtnl() run slightly
    before the temporary address becomes deprecated, if dad succeeded.
    Signed-off-by: default avatarMarcus Huewe <suse-tux@gmx.de>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    Signed-off-by: default avatarSasha Levin <alexander.levin@verizon.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    d385ed7a
addrconf.c 153 KB