在 2026/3/8 10:44, David Ahern 写道:
On 3/8/26 12:47 AM, Zhu Yanjun wrote:
+/*
+ * Called for every existing and added network namespaces
+ */
+static int __net_init rxe_ns_init(struct net *net)
+{
+       /*
+        * create (if not present) and access data item in network namespace
+        * (net) using the id (net_id)
+        */
+       struct rxe_ns_sock *ns_sk = net_generic(net, rxe_pernet_id);
+
+       rcu_assign_pointer(ns_sk->rxe_sk4, NULL); /* initialize sock 4 socket */
+       rcu_assign_pointer(ns_sk->rxe_sk6, NULL); /* initialize sock 6 socket */
+       synchronize_rcu();
As I stated in the last review, this is init is not needded. drop it.

See the net/core/net_namespace.c:

static int ops_init(const struct pernet_operations *ops, struct net *net)
{
         struct net_generic *ng;
         int err = -ENOMEM;
         void *data = NULL;

         if (ops->id) {
                 data = kzalloc(ops->size, GFP_KERNEL);
                 if (!data)
                         goto out;

                 err = net_assign_generic(net, *ops->id, data);
                 if (err)
                         goto cleanup;
         }

from there the request is to add a comment about deferred socket created
to explain why _init and _exit are assymetrical.

+
+       return 0;
+}
+
+static void __net_exit rxe_ns_exit(struct net *net)
+{
+       /*
+        * called when the network namespace is removed
+        */
+       struct rxe_ns_sock *ns_sk = net_generic(net, rxe_pernet_id);
+       struct sock *rxe_sk4 = NULL;
+       struct sock *rxe_sk6 = NULL;
again, init is not needed. They are set below before use.

I am beginning to think you dropped my review comments from the last
round ....

+
+       rcu_read_lock();
+       rxe_sk4 = rcu_dereference(ns_sk->rxe_sk4);
+       rxe_sk6 = rcu_dereference(ns_sk->rxe_sk6);
+       rcu_read_unlock();
+
+       /* close socket */
+       if (rxe_sk4 && rxe_sk4->sk_socket) {
+               udp_tunnel_sock_release(rxe_sk4->sk_socket);
+               rcu_assign_pointer(ns_sk->rxe_sk4, NULL);
+               synchronize_rcu();
yea, I commented on this too.

I am not wasting any more time on this version. Either address my
comments from v1 or explain why you should not in that email.

Hi, David

All the above changes are included in "[PATCH v3 3/4] RDMA/rxe: Support RDMA link creation and destruction per net namespace".

Please let me know if you have any further comments on "[PATCH v3 3/4] RDMA/rxe: Support RDMA link creation and destruction per net namespace".

If there are no additional comments, I plan to move these changes into "[PATCH v3 2/4] RDMA/rxe: Add net namespace support for IPv4/IPv6 sockets" and send out a new version of the patch series.

Thanks a lot.

Zhu Yanjun

--
Best Regards,
Yanjun.Zhu


Reply via email to