Re: [PATCH v3 net-next 06/15] neighbour: Store arp_tbl and nd_tbl in net->neigh_tables[].
David Ahern <[email protected]>
| Newsgroups | org.kernel.vger.netdev |
|---|---|
| Message-ID | <[email protected]> |
On 8/10/26 8:23 PM, Kuniyuki Iwashima wrote:
> diff --git a/net/ipv4/arp.c b/net/ipv4/arp.c
> index d409f606aec0..bad17d5aeafc 100644
> --- a/net/ipv4/arp.c
> +++ b/net/ipv4/arp.c
> @@ -1495,15 +1495,34 @@ static const struct seq_operations arp_seq_ops = {
>
> static int __net_init arp_net_init(struct net *net)
> {
> + int err;
> +
> + err = neigh_table_register(net, &arp_tbl, NEIGH_ARP_TABLE);
> + if (err)
> + goto err;
> +
> +#ifdef CONFIG_PROC_FS
> if (!proc_create_net("arp", 0444, net->proc_net, &arp_seq_ops,
> - sizeof(struct neigh_seq_state)))
proc_create_net already handles CONFIG_PROC_FS. It is not clear to me
why you need to add the check here and below.
> - return -ENOMEM;
> + sizeof(struct neigh_seq_state))) {
> + err = -ENOMEM;
> + goto err_proc_create;
> + }
> +#endif
> +
> return 0;
> +
> +#ifdef CONFIG_PROC_FS
> +err_proc_create:
> + neigh_table_unregister(net, NEIGH_ARP_TABLE);
> +#endif
> +err:
> + return err;
> }
>
> static void __net_exit arp_net_exit(struct net *net)
> {
> remove_proc_entry("arp", net->proc_net);
> + neigh_table_unregister(net, NEIGH_ARP_TABLE);
> }
>
> static struct pernet_operations arp_net_ops = {