diff --git a/lnet/klnds/o2iblnd/o2iblnd.c b/lnet/klnds/o2iblnd/o2iblnd.c
index 6da280e..f831a46 100644
--- a/lnet/klnds/o2iblnd/o2iblnd.c
+++ b/lnet/klnds/o2iblnd/o2iblnd.c
@@ -2888,16 +2888,16 @@ kiblnd_create_dev(char *ifname)
flags = dev_get_flags(netdev);
if (!(flags & IFF_UP)) {
- CERROR("Can't query IPoIB interface %s: it's down\n",
+ CWARN("Can't query IPoIB interface %s: it's down\n",
netdev->name);
- goto unlock;
+ continue;
}
in_dev = __in_dev_get_rtnl(netdev);
if (!in_dev) {
CWARN("Interface %s has no IPv4 status.\n",
netdev->name);
- goto unlock;
+ continue;
}
for_ifa(in_dev)
@@ -2916,6 +2916,7 @@ kiblnd_create_dev(char *ifname)
}
endfor_ifa(in_dev);
}
+unlock:
rtnl_unlock();
if (!dev) {
@@ -2938,8 +2939,7 @@ kiblnd_create_dev(char *ifname)
list_add_tail(&dev->ibd_list, &kiblnd_data.kib_devs);
return dev;
-unlock:
- rtnl_unlock();
+
free_dev:
LIBCFS_FREE(dev, sizeof(*dev));
return NULL;