Whamcloud - gitweb
LU-7845 lnet: check if ni is in current net namespace
[fs/lustre-release.git] / lnet / lnet / config.c
index 1105231..93ab8ba 100644 (file)
@@ -35,6 +35,8 @@
  */
 
 #define DEBUG_SUBSYSTEM S_LNET
+#include <linux/nsproxy.h>
+#include <net/net_namespace.h>
 #include <lnet/lib-lnet.h>
 
 /* tmp struct for parsing routes */
@@ -116,6 +118,11 @@ lnet_ni_free(struct lnet_ni *ni)
                LIBCFS_FREE(ni->ni_interfaces[i],
                            strlen(ni->ni_interfaces[i]) + 1);
        }
+
+       /* release reference to net namespace */
+       if (ni->ni_net_ns != NULL)
+               put_net(ni->ni_net_ns);
+
        LIBCFS_FREE(ni, sizeof(*ni));
 }
 
@@ -177,6 +184,13 @@ lnet_ni_alloc(__u32 net, struct cfs_expr_list *el, struct list_head *nilist)
 
        /* LND will fill in the address part of the NID */
        ni->ni_nid = LNET_MKNID(net, 0);
+
+       /* Store net namespace in which current ni is being created */
+       if (current->nsproxy->net_ns != NULL)
+               ni->ni_net_ns = get_net(current->nsproxy->net_ns);
+       else
+               ni->ni_net_ns = NULL;
+
        ni->ni_last_alive = cfs_time_current_sec();
        list_add_tail(&ni->ni_list, nilist);
        return ni;