sctp: optimize the sctp_sysctl_net_register
Here, when the net is init_net, we needn't to kmemdup the ctl_table again. So add a check for net. Also we can save some memory. Signed-off-by: Wang Weidong <wangweidong1@huawei.com> Acked-by: Neil Horman <nhorman@tuxdriver.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
22a1f5140e
commit
efb842c45e
|
@ -402,15 +402,18 @@ static int proc_sctp_do_rto_max(struct ctl_table *ctl, int write,
|
||||||
|
|
||||||
int sctp_sysctl_net_register(struct net *net)
|
int sctp_sysctl_net_register(struct net *net)
|
||||||
{
|
{
|
||||||
struct ctl_table *table;
|
struct ctl_table *table = sctp_net_table;
|
||||||
int i;
|
|
||||||
|
|
||||||
table = kmemdup(sctp_net_table, sizeof(sctp_net_table), GFP_KERNEL);
|
if (!net_eq(net, &init_net)) {
|
||||||
if (!table)
|
int i;
|
||||||
return -ENOMEM;
|
|
||||||
|
|
||||||
for (i = 0; table[i].data; i++)
|
table = kmemdup(sctp_net_table, sizeof(sctp_net_table), GFP_KERNEL);
|
||||||
table[i].data += (char *)(&net->sctp) - (char *)&init_net.sctp;
|
if (!table)
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
|
for (i = 0; table[i].data; i++)
|
||||||
|
table[i].data += (char *)(&net->sctp) - (char *)&init_net.sctp;
|
||||||
|
}
|
||||||
|
|
||||||
net->sctp.sysctl_header = register_net_sysctl(net, "net/sctp", table);
|
net->sctp.sysctl_header = register_net_sysctl(net, "net/sctp", table);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in New Issue