Linux Headquarters
[ Register ]
[ About us ] [ Home Page ]

[ Kernel ] [ Documentation ] [ Links ] [ Books ]

Advertisement

Kernel v2.6.25-rc7 /net/unix/sysctl_net_unix.c

Filename:/net/unix/sysctl_net_unix.c
Lines Added:28
Lines Deleted:24
Also changed in: (Previous) 2.6.25-rc6  2.6.25-rc5  2.6.25-rc4  2.6.25-rc3  2.6.25-rc2  2.6.25-rc1 
(Following) 2.6.25-rc8  2.6.25-rc9  2.6.25 

Location
[  2.6.25-rc7
  [  net
    [  unix
       o  sysctl_net_unix.c

Patch

diff --git a/net/unix/sysctl_net_unix.c b/net/unix/sysctl_net_unix.c
index eb0bd57..77513d7 100644
--- a/net/unix/sysctl_net_unix.c
+++ b/net/unix/sysctl_net_unix.c
@@ -18,7 +18,7 @@ static ctl_table unix_table[] = {
    {
       .ctl_name   = NET_UNIX_MAX_DGRAM_QLEN,
       .procname   = "max_dgram_qlen",
-      .data      = &sysctl_unix_max_dgram_qlen,
+      .data      = &init_net.unx.sysctl_max_dgram_qlen,
       .maxlen      = sizeof(int),
       .mode      = 0644,
       .proc_handler   = &proc_dointvec
@@ -26,35 +26,39 @@ static ctl_table unix_table[] = {
    { .ctl_name = 0 }
 };
 
-static ctl_table unix_net_table[] = {
-   {
-      .ctl_name   = NET_UNIX,
-      .procname   = "unix",
-      .mode      = 0555,
-      .child      = unix_table
-   },
-   { .ctl_name = 0 }
+static struct ctl_path unix_path[] = {
+   { .procname = "net", .ctl_name = CTL_NET, },
+   { .procname = "unix", .ctl_name = NET_UNIX, },
+   { },
 };
 
-static ctl_table unix_root_table[] = {
-   {
-      .ctl_name   = CTL_NET,
-      .procname   = "net",
-      .mode      = 0555,
-      .child      = unix_net_table
-   },
-   { .ctl_name = 0 }
-};
+int unix_sysctl_register(struct net *net)
+{
+   struct ctl_table *table;
 
-static struct ctl_table_header * unix_sysctl_header;
+   table = kmemdup(unix_table, sizeof(unix_table), GFP_KERNEL);
+   if (table == NULL)
+      goto err_alloc;
 
-void unix_sysctl_register(void)
-{
-   unix_sysctl_header = register_sysctl_table(unix_root_table);
+   table[0].data = &net->unx.sysctl_max_dgram_qlen;
+   net->unx.ctl = register_net_sysctl_table(net, unix_path, table);
+   if (net->unx.ctl == NULL)
+      goto err_reg;
+
+   return 0;
+
+err_reg:
+   kfree(table);
+err_alloc:
+   return -ENOMEM;
 }
 
-void unix_sysctl_unregister(void)
+void unix_sysctl_unregister(struct net *net)
 {
-   unregister_sysctl_table(unix_sysctl_header);
+   struct ctl_table *table;
+
+   table = net->unx.ctl->ctl_table_arg;
+   unregister_sysctl_table(net->unx.ctl);
+   kfree(table);
 }
 


Comments: webmaster (at) linuxhq.com.
Advertising: banners (at) linuxhq.com.
Compilation ©1998-2008 Linux Headquarters, Inc.