diff --git a/lib/netdev.c b/lib/netdev.c index ecd01e25fdb..284e8d8d8b3 100644 --- a/lib/netdev.c +++ b/lib/netdev.c @@ -2348,16 +2348,16 @@ int netdev_get_addrs(const struct netdev *dev, struct in6_addr **paddr, struct in6_addr **pmask, int *n_in) { - struct in6_addr *addr_array, *mask_array; - int cnt = 0; - - ovs_mutex_lock(&if_addr_list_lock); - int ifindex = netdev_get_ifindex(dev); if (ifindex < 0) { return -ifindex; } + struct in6_addr *addr_array, *mask_array; + int cnt = 0; + + ovs_mutex_lock(&if_addr_list_lock); + if (!if_addr_list) { int err = netdev_linux_get_addr_list(&if_addr_list); if (err) {