Merge tag 'i2c-for-6.6-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa...
[linux-2.6-microblaze.git] / net / sysctl_net.c
index 4b45ed6..051ed5f 100644 (file)
@@ -101,7 +101,7 @@ __init int net_sysctl_init(void)
         * registering "/proc/sys/net" as an empty directory not in a
         * network namespace.
         */
-       net_header = register_sysctl("net", empty);
+       net_header = register_sysctl_sz("net", empty, 0);
        if (!net_header)
                goto out;
        ret = register_pernet_subsys(&sysctl_pernet_ops);
@@ -122,12 +122,13 @@ out1:
  *    allocated.
  */
 static void ensure_safe_net_sysctl(struct net *net, const char *path,
-                                  struct ctl_table *table)
+                                  struct ctl_table *table, size_t table_size)
 {
        struct ctl_table *ent;
 
        pr_debug("Registering net sysctl (net %p): %s\n", net, path);
-       for (ent = table; ent->procname; ent++) {
+       ent = table;
+       for (size_t i = 0; i < table_size && ent->procname; ent++, i++) {
                unsigned long addr;
                const char *where;
 
@@ -160,15 +161,24 @@ static void ensure_safe_net_sysctl(struct net *net, const char *path,
        }
 }
 
-struct ctl_table_header *register_net_sysctl(struct net *net,
-       const char *path, struct ctl_table *table)
+struct ctl_table_header *register_net_sysctl_sz(struct net *net,
+                                               const char *path,
+                                               struct ctl_table *table,
+                                               size_t table_size)
 {
+       int count;
+       struct ctl_table *entry;
+
        if (!net_eq(net, &init_net))
-               ensure_safe_net_sysctl(net, path, table);
+               ensure_safe_net_sysctl(net, path, table, table_size);
+
+       entry = table;
+       for (count = 0 ; count < table_size && entry->procname; entry++, count++)
+               ;
 
-       return __register_sysctl_table(&net->sysctls, path, table);
+       return __register_sysctl_table(&net->sysctls, path, table, count);
 }
-EXPORT_SYMBOL_GPL(register_net_sysctl);
+EXPORT_SYMBOL_GPL(register_net_sysctl_sz);
 
 void unregister_net_sysctl_table(struct ctl_table_header *header)
 {