OSDN Git Service

Merge tag 'nfs-for-6.6-1' of git://git.linux-nfs.org/projects/anna/linux-nfs
[tomoyo/tomoyo-test1.git] / net / core / neighbour.c
index ddd0f32..6b76cd1 100644 (file)
@@ -3779,6 +3779,7 @@ int neigh_sysctl_register(struct net_device *dev, struct neigh_parms *p,
        const char *dev_name_source;
        char neigh_path[ sizeof("net//neigh/") + IFNAMSIZ + IFNAMSIZ ];
        char *p_name;
+       size_t neigh_vars_size;
 
        t = kmemdup(&neigh_sysctl_template, sizeof(*t), GFP_KERNEL_ACCOUNT);
        if (!t)
@@ -3790,11 +3791,13 @@ int neigh_sysctl_register(struct net_device *dev, struct neigh_parms *p,
                t->neigh_vars[i].extra2 = p;
        }
 
+       neigh_vars_size = ARRAY_SIZE(t->neigh_vars);
        if (dev) {
                dev_name_source = dev->name;
                /* Terminate the table early */
                memset(&t->neigh_vars[NEIGH_VAR_GC_INTERVAL], 0,
                       sizeof(t->neigh_vars[NEIGH_VAR_GC_INTERVAL]));
+               neigh_vars_size = NEIGH_VAR_BASE_REACHABLE_TIME_MS + 1;
        } else {
                struct neigh_table *tbl = p->tbl;
                dev_name_source = "default";
@@ -3841,8 +3844,9 @@ int neigh_sysctl_register(struct net_device *dev, struct neigh_parms *p,
 
        snprintf(neigh_path, sizeof(neigh_path), "net/%s/neigh/%s",
                p_name, dev_name_source);
-       t->sysctl_header =
-               register_net_sysctl(neigh_parms_net(p), neigh_path, t->neigh_vars);
+       t->sysctl_header = register_net_sysctl_sz(neigh_parms_net(p),
+                                                 neigh_path, t->neigh_vars,
+                                                 neigh_vars_size);
        if (!t->sysctl_header)
                goto free;