net llc: Don't use sysctl tables with .child entries.
authorEric W. Biederman <ebiederm@xmission.com>
Thu, 19 Apr 2012 13:35:39 +0000 (13:35 +0000)
committerDavid S. Miller <davem@davemloft.net>
Sat, 21 Apr 2012 01:22:29 +0000 (21:22 -0400)
The sysctl core no longer natively understands sysctl tables with .child
entries.

Kill the intermediate tables and use register_net_sysctl directly to
remove the need for compatibility code.

Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Acked-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/llc/sysctl_net_llc.c

index 9a6a65f2104b529df77821928affc314412a7074..d75306b9c2f3e80d5fe0ed90d511d646b8a0728c 100644 (file)
@@ -57,48 +57,29 @@ static struct ctl_table llc_station_table[] = {
        { },
 };
 
-static struct ctl_table llc2_dir_timeout_table[] = {
-       {
-               .procname       = "timeout",
-               .mode           = 0555,
-               .child          = llc2_timeout_table,
-       },
-       { },
-};
-
-static struct ctl_table llc_table[] = {
-       {
-               .procname       = "llc2",
-               .mode           = 0555,
-               .child          = llc2_dir_timeout_table,
-       },
-       {
-               .procname       = "station",
-               .mode           = 0555,
-               .child          = llc_station_table,
-       },
-       { },
-};
-
-static struct ctl_path llc_path[] = {
-       { .procname = "net", },
-       { .procname = "llc", },
-       { }
-};
-
-static struct ctl_table_header *llc_table_header;
+static struct ctl_table_header *llc2_timeout_header;
+static struct ctl_table_header *llc_station_header;
 
 int __init llc_sysctl_init(void)
 {
-       llc_table_header = register_net_sysctl_table(&init_net, llc_path, llc_table);
+       llc2_timeout_header = register_net_sysctl(&init_net, "net/llc/llc2/timeout", llc2_timeout_table);
+       llc_station_header = register_net_sysctl(&init_net, "net/llc/station", llc_station_table);
 
-       return llc_table_header ? 0 : -ENOMEM;
+       if (!llc2_timeout_header || !llc_station_header) {
+               llc_sysctl_exit();
+               return -ENOMEM;
+       }
+       return 0;
 }
 
 void llc_sysctl_exit(void)
 {
-       if (llc_table_header) {
-               unregister_net_sysctl_table(llc_table_header);
-               llc_table_header = NULL;
+       if (llc2_timeout_header) {
+               unregister_net_sysctl_table(llc2_timeout_header);
+               llc2_timeout_header = NULL;
+       }
+       if (llc_station_header) {
+               unregister_net_sysctl_table(llc_station_header);
+               llc_station_header = NULL;
        }
 }
This page took 0.025058 seconds and 5 git commands to generate.