• Ido Schimmel's avatar
    ipv6: Fix address dump when IPv6 is disabled on an interface · c04f7dfe
    Ido Schimmel authored
    Cited commit started returning an error when user space requests to dump
    the interface's IPv6 addresses and IPv6 is disabled on the interface.
    Restore the previous behavior and do not return an error.
    
    Before cited commit:
    
     # ip address show dev dummy1
     2: dummy1: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
         link/ether 1a:52:02:5a:c2:6e brd ff:ff:ff:ff:ff:ff
         inet6 fe80::1852:2ff:fe5a:c26e/64 scope link proto kernel_ll
            valid_lft forever preferred_lft forever
     # ip link set dev dummy1 mtu 1000
     # ip address show dev dummy1
     2: dummy1: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1000 qdisc noqueue state UNKNOWN group default qlen 1000
         link/ether 1a:52:02:5a:c2:6e brd ff:ff:ff:ff:ff:ff
    
    After cited commit:
    
     # ip address show dev dummy1
     2: dummy1: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
         link/ether 1e:9b:94:00:ac:e8 brd ff:ff:ff:ff:ff:ff
         inet6 fe80::1c9b:94ff:fe00:ace8/64 scope link proto kernel_ll
            valid_lft forever preferred_lft forever
     # ip link set dev dummy1 mtu 1000
     # ip address show dev dummy1
     RTNETLINK answers: No such device
     Dump terminated
    
    With this patch:
    
     # ip address show dev dummy1
     2: dummy1: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
         link/ether 42:35:fc:53:66:cf brd ff:ff:ff:ff:ff:ff
         inet6 fe80::4035:fcff:fe53:66cf/64 scope link proto kernel_ll
            valid_lft forever preferred_lft forever
     # ip link set dev dummy1 mtu 1000
     # ip address show dev dummy1
     2: dummy1: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1000 qdisc noqueue state UNKNOWN group default qlen 1000
         link/ether 42:35:fc:53:66:cf brd ff:ff:ff:ff:ff:ff
    
    Fixes: 9cc4cc32 ("ipv6: use xa_array iterator to implement inet6_dump_addr()")
    Reported-by: default avatarGal Pressman <gal@nvidia.com>
    Closes: https://lore.kernel.org/netdev/7e261328-42eb-411d-b1b4-ad884eeaae4d@linux.dev/Tested-by: default avatarGal Pressman <gal@nvidia.com>
    Signed-off-by: default avatarIdo Schimmel <idosch@nvidia.com>
    Reviewed-by: default avatarEric Dumazet <edumazet@google.com>
    Link: https://lore.kernel.org/r/20240321173042.2151756-1-idosch@nvidia.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    c04f7dfe
addrconf.c 184 KB