netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/2] sctp: fix a problem with net_namespace
@ 2014-02-11  1:49 Wang Weidong
  2014-02-11  1:49 ` [PATCH v2 1/2] sctp: fix a missed .data initialization Wang Weidong
  2014-02-11  1:49 ` [PATCH v2 2/2] sctp: optimize the sctp_sysctl_net_register Wang Weidong
  0 siblings, 2 replies; 5+ messages in thread
From: Wang Weidong @ 2014-02-11  1:49 UTC (permalink / raw)
  To: nhorman, davem, vyasevich; +Cc: dborkman, netdev

fix a problem with net_namespace, and optimize
the sctp_sysctl_net_register.

v1 -> v2:
  -patch1: add Neil's ACK.

Wang Weidong (2):
  sctp: fix a missed .data initialization
  sctp: optimize the sctp_sysctl_net_register

 net/sctp/sysctl.c | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

-- 
1.7.12

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH v2 1/2] sctp: fix a missed .data initialization
  2014-02-11  1:49 [PATCH v2 0/2] sctp: fix a problem with net_namespace Wang Weidong
@ 2014-02-11  1:49 ` Wang Weidong
  2014-02-11  1:49 ` [PATCH v2 2/2] sctp: optimize the sctp_sysctl_net_register Wang Weidong
  1 sibling, 0 replies; 5+ messages in thread
From: Wang Weidong @ 2014-02-11  1:49 UTC (permalink / raw)
  To: nhorman, davem, vyasevich; +Cc: dborkman, netdev

As commit 3c68198e75111a90("sctp: Make hmac algorithm selection for
 cookie generation dynamic"), we miss the .data initialization.
If we don't use the net_namespace, the problem that parts of the
sysctl configuration won't be isolation and won't occur.

In sctp_sysctl_net_register(), we register the sysctl for each
net, in the for(), we use the 'table[i].data' as check condition, so
when the 'i' is the index of sctp_hmac_alg, the data is NULL, then
break. So add the .data initialization.

Acked-by: Neil Horman <nhorman@tuxdriver.com>
Signed-off-by: Wang Weidong <wangweidong1@huawei.com>
---
 net/sctp/sysctl.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/net/sctp/sysctl.c b/net/sctp/sysctl.c
index b0565af..2ddb401 100644
--- a/net/sctp/sysctl.c
+++ b/net/sctp/sysctl.c
@@ -152,6 +152,7 @@ static struct ctl_table sctp_net_table[] = {
 	},
 	{
 		.procname	= "cookie_hmac_alg",
+		.data		= &init_net.sctp.sctp_hmac_alg,
 		.maxlen		= 8,
 		.mode		= 0644,
 		.proc_handler	= proc_sctp_do_hmac_alg,
-- 
1.7.12

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH v2 2/2] sctp: optimize the sctp_sysctl_net_register
  2014-02-11  1:49 [PATCH v2 0/2] sctp: fix a problem with net_namespace Wang Weidong
  2014-02-11  1:49 ` [PATCH v2 1/2] sctp: fix a missed .data initialization Wang Weidong
@ 2014-02-11  1:49 ` Wang Weidong
  2014-02-11 16:47   ` Sergei Shtylyov
  1 sibling, 1 reply; 5+ messages in thread
From: Wang Weidong @ 2014-02-11  1:49 UTC (permalink / raw)
  To: nhorman, davem, vyasevich; +Cc: dborkman, netdev

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>
---
 net/sctp/sysctl.c | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)

diff --git a/net/sctp/sysctl.c b/net/sctp/sysctl.c
index 2ddb401..b65396b 100644
--- a/net/sctp/sysctl.c
+++ b/net/sctp/sysctl.c
@@ -403,15 +403,17 @@ 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;
 
-	table = kmemdup(sctp_net_table, sizeof(sctp_net_table), GFP_KERNEL);
-	if (!table)
-		return -ENOMEM;
+	if (!net_eq(net, &init_net)) {
+		int i;
+		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;
+	}
 
 	net->sctp.sysctl_header = register_net_sysctl(net, "net/sctp", table);
 	return 0;
-- 
1.7.12

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH v2 2/2] sctp: optimize the sctp_sysctl_net_register
  2014-02-11  1:49 ` [PATCH v2 2/2] sctp: optimize the sctp_sysctl_net_register Wang Weidong
@ 2014-02-11 16:47   ` Sergei Shtylyov
  2014-02-12  1:21     ` Wang Weidong
  0 siblings, 1 reply; 5+ messages in thread
From: Sergei Shtylyov @ 2014-02-11 16:47 UTC (permalink / raw)
  To: Wang Weidong, nhorman, davem, vyasevich; +Cc: dborkman, netdev

Hello.

On 02/11/2014 04:49 AM, 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 <wangweidong1@huawei.com>
> ---
>   net/sctp/sysctl.c | 16 +++++++++-------
>   1 file changed, 9 insertions(+), 7 deletions(-)

> diff --git a/net/sctp/sysctl.c b/net/sctp/sysctl.c
> index 2ddb401..b65396b 100644
> --- a/net/sctp/sysctl.c
> +++ b/net/sctp/sysctl.c
> @@ -403,15 +403,17 @@ 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;
>
> -	table = kmemdup(sctp_net_table, sizeof(sctp_net_table), GFP_KERNEL);
> -	if (!table)
> -		return -ENOMEM;
> +	if (!net_eq(net, &init_net)) {
> +		int i;

    Empty line after declaration wouldn't hurt, just like above.

> +		table = kmemdup(sctp_net_table, sizeof(sctp_net_table), GFP_KERNEL);
> +		if (!table)
> +			return -ENOMEM;

WBR, Sergei

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v2 2/2] sctp: optimize the sctp_sysctl_net_register
  2014-02-11 16:47   ` Sergei Shtylyov
@ 2014-02-12  1:21     ` Wang Weidong
  0 siblings, 0 replies; 5+ messages in thread
From: Wang Weidong @ 2014-02-12  1:21 UTC (permalink / raw)
  To: Sergei Shtylyov, nhorman, davem, vyasevich; +Cc: dborkman, netdev

On 2014/2/12 0:47, Sergei Shtylyov wrote:
> Hello.
> 
> On 02/11/2014 04:49 AM, 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 <wangweidong1@huawei.com>
>> ---
>>   net/sctp/sysctl.c | 16 +++++++++-------
>>   1 file changed, 9 insertions(+), 7 deletions(-)
> 
>> diff --git a/net/sctp/sysctl.c b/net/sctp/sysctl.c
>> index 2ddb401..b65396b 100644
>> --- a/net/sctp/sysctl.c
>> +++ b/net/sctp/sysctl.c
>> @@ -403,15 +403,17 @@ 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;
>>
>> -    table = kmemdup(sctp_net_table, sizeof(sctp_net_table), GFP_KERNEL);
>> -    if (!table)
>> -        return -ENOMEM;
>> +    if (!net_eq(net, &init_net)) {
>> +        int i;
> 
>    Empty line after declaration wouldn't hurt, just like above.
> 
Yeah. I will change it soon.

Thanks
Wang

>> +        table = kmemdup(sctp_net_table, sizeof(sctp_net_table), GFP_KERNEL);
>> +        if (!table)
>> +            return -ENOMEM;
> 
> WBR, Sergei
> 
> -- 
> To unsubscribe from this list: send the line "unsubscribe netdev" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 
> 

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2014-02-12  1:23 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-02-11  1:49 [PATCH v2 0/2] sctp: fix a problem with net_namespace Wang Weidong
2014-02-11  1:49 ` [PATCH v2 1/2] sctp: fix a missed .data initialization Wang Weidong
2014-02-11  1:49 ` [PATCH v2 2/2] sctp: optimize the sctp_sysctl_net_register Wang Weidong
2014-02-11 16:47   ` Sergei Shtylyov
2014-02-12  1:21     ` Wang Weidong

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).