• Maciej Żenczykowski's avatar
    ipv6 addrconf: fix bug where deleting a mngtmpaddr can create a new temporary address · 69172f0b
    Maciej Żenczykowski authored
    currently on 6.4 net/main:
    
      # ip link add dummy1 type dummy
      # echo 1 > /proc/sys/net/ipv6/conf/dummy1/use_tempaddr
      # ip link set dummy1 up
      # ip -6 addr add 2000::1/64 mngtmpaddr dev dummy1
      # ip -6 addr show dev dummy1
    
      11: dummy1: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
          inet6 2000::44f3:581c:8ca:3983/64 scope global temporary dynamic
             valid_lft 604800sec preferred_lft 86172sec
          inet6 2000::1/64 scope global mngtmpaddr
             valid_lft forever preferred_lft forever
          inet6 fe80::e8a8:a6ff:fed5:56d4/64 scope link
             valid_lft forever preferred_lft forever
    
      # ip -6 addr del 2000::44f3:581c:8ca:3983/64 dev dummy1
    
      (can wait a few seconds if you want to, the above delete isn't [directly] the problem)
    
      # ip -6 addr show dev dummy1
    
      11: dummy1: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
          inet6 2000::1/64 scope global mngtmpaddr
             valid_lft forever preferred_lft forever
          inet6 fe80::e8a8:a6ff:fed5:56d4/64 scope link
             valid_lft forever preferred_lft forever
    
      # ip -6 addr del 2000::1/64 mngtmpaddr dev dummy1
      # ip -6 addr show dev dummy1
    
      11: dummy1: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
          inet6 2000::81c9:56b7:f51a:b98f/64 scope global temporary dynamic
             valid_lft 604797sec preferred_lft 86169sec
          inet6 fe80::e8a8:a6ff:fed5:56d4/64 scope link
             valid_lft forever preferred_lft forever
    
    This patch prevents this new 'global temporary dynamic' address from being
    created by the deletion of the related (same subnet prefix) 'mngtmpaddr'
    (which is triggered by there already being no temporary addresses).
    
    Cc: Jiri Pirko <jiri@resnulli.us>
    Fixes: 53bd6749 ("ipv6 addrconf: introduce IFA_F_MANAGETEMPADDR to tell kernel to manage temporary addresses")
    Reported-by: default avatarXiao Ma <xiaom@google.com>
    Signed-off-by: default avatarMaciej Żenczykowski <maze@google.com>
    Reviewed-by: default avatarDavid Ahern <dsahern@kernel.org>
    Link: https://lore.kernel.org/r/20230720160022.1887942-1-maze@google.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    69172f0b
addrconf.c 180 KB