Subject: Re: [PATCH v3 2/2] sctp: optimize the sctp_sysctl_net_register

From: Wang Weidong <[email-masked]>
Date: Thu, 13 Feb 2014 09:19:25 +0800

On 2014/2/12 19:53, Neil Horman wrote:
> On Wed, Feb 12, 2014 at 09:44:44AM +0800, Wang Weidong wrote:
>> 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 <[email-masked]>
>> ---
>>  net/sctp/sysctl.c | 17 ++++++++++-------
>>  1 file changed, 10 insertions(+), 7 deletions(-)
>>
>> diff --git a/net/sctp/sysctl.c b/net/sctp/sysctl.c
>> index d354de5..35c8923 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,
>>  
>>  int sctp_sysctl_net_register(struct net *net)
>>  {
>> -	struct ctl_table *table;
>> -	int i;
>> +	struct ctl_table *table = sctp_net_table;
>> +
>> +	if (!net_eq(net, &init_net)) {
>> +		int i;
>>  
>> -	table = kmemdup(sctp_net_table, sizeof(sctp_net_table), GFP_KERNEL);
>> -	if (!table)
>> -		return -ENOMEM;
>> +		table = kmemdup(sctp_net_table, sizeof(sctp_net_table), GFP_KERNEL);
>> +		if (!table)
>> +			return -ENOMEM;
>>  
>> -	for (i = 0; table[i].data; i++)
>> -		table[i].data += (char *)(&net->sctp) - (char *)&init_net.sctp;
>> +		for (i = 0; table[i].data; i++)
>> +			table[i].data += (char *)(&net->sctp) - (char *)&init_net.sctp;
>> +	}
>>  
> In the first version of this patch you complained about a lockdep issue.  Did
> you figure out what that was, and if it related to these changes?
> 
> Neil
> 
> 
Hi Neil,

The lockdep issue doesn't relate to these changes. I should send it
by the another email. Sorry for confusing you.

Regards
Wang

> .