{ },
 };
 
-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;
        }
 }