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.


Reply via email to