diff options
Diffstat (limited to 'net/sctp/sysctl.c')
-rw-r--r-- | net/sctp/sysctl.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/net/sctp/sysctl.c b/net/sctp/sysctl.c index 7135e617ab0f..35c8923b5554 100644 --- a/net/sctp/sysctl.c +++ b/net/sctp/sysctl.c | |||
@@ -151,6 +151,7 @@ static struct ctl_table sctp_net_table[] = { | |||
151 | }, | 151 | }, |
152 | { | 152 | { |
153 | .procname = "cookie_hmac_alg", | 153 | .procname = "cookie_hmac_alg", |
154 | .data = &init_net.sctp.sctp_hmac_alg, | ||
154 | .maxlen = 8, | 155 | .maxlen = 8, |
155 | .mode = 0644, | 156 | .mode = 0644, |
156 | .proc_handler = proc_sctp_do_hmac_alg, | 157 | .proc_handler = proc_sctp_do_hmac_alg, |
@@ -401,15 +402,18 @@ static int proc_sctp_do_rto_max(struct ctl_table *ctl, int write, | |||
401 | 402 | ||
402 | int sctp_sysctl_net_register(struct net *net) | 403 | int sctp_sysctl_net_register(struct net *net) |
403 | { | 404 | { |
404 | struct ctl_table *table; | 405 | struct ctl_table *table = sctp_net_table; |
405 | int i; | 406 | |
407 | if (!net_eq(net, &init_net)) { | ||
408 | int i; | ||
406 | 409 | ||
407 | table = kmemdup(sctp_net_table, sizeof(sctp_net_table), GFP_KERNEL); | 410 | table = kmemdup(sctp_net_table, sizeof(sctp_net_table), GFP_KERNEL); |
408 | if (!table) | 411 | if (!table) |
409 | return -ENOMEM; | 412 | return -ENOMEM; |
410 | 413 | ||
411 | for (i = 0; table[i].data; i++) | 414 | for (i = 0; table[i].data; i++) |
412 | table[i].data += (char *)(&net->sctp) - (char *)&init_net.sctp; | 415 | table[i].data += (char *)(&net->sctp) - (char *)&init_net.sctp; |
416 | } | ||
413 | 417 | ||
414 | net->sctp.sysctl_header = register_net_sysctl(net, "net/sctp", table); | 418 | net->sctp.sysctl_header = register_net_sysctl(net, "net/sctp", table); |
415 | return 0; | 419 | return 0; |