diff options
-rw-r--r-- | net/sctp/sysctl.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/net/sctp/sysctl.c b/net/sctp/sysctl.c index d354de5a6fe0..35c8923b5554 100644 --- a/net/sctp/sysctl.c +++ b/net/sctp/sysctl.c | |||
@@ -402,15 +402,18 @@ static int proc_sctp_do_rto_max(struct ctl_table *ctl, int write, | |||
402 | 402 | ||
403 | int sctp_sysctl_net_register(struct net *net) | 403 | int sctp_sysctl_net_register(struct net *net) |
404 | { | 404 | { |
405 | struct ctl_table *table; | 405 | struct ctl_table *table = sctp_net_table; |
406 | int i; | 406 | |
407 | if (!net_eq(net, &init_net)) { | ||
408 | int i; | ||
407 | 409 | ||
408 | table = kmemdup(sctp_net_table, sizeof(sctp_net_table), GFP_KERNEL); | 410 | table = kmemdup(sctp_net_table, sizeof(sctp_net_table), GFP_KERNEL); |
409 | if (!table) | 411 | if (!table) |
410 | return -ENOMEM; | 412 | return -ENOMEM; |
411 | 413 | ||
412 | for (i = 0; table[i].data; i++) | 414 | for (i = 0; table[i].data; i++) |
413 | table[i].data += (char *)(&net->sctp) - (char *)&init_net.sctp; | 415 | table[i].data += (char *)(&net->sctp) - (char *)&init_net.sctp; |
416 | } | ||
414 | 417 | ||
415 | net->sctp.sysctl_header = register_net_sysctl(net, "net/sctp", table); | 418 | net->sctp.sysctl_header = register_net_sysctl(net, "net/sctp", table); |
416 | return 0; | 419 | return 0; |