All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] net: Statically initialize init_net.dev_base_head
@ 2012-07-18 19:06 Mark Rustad
  2012-07-18 19:13 ` Eric Dumazet
  2012-07-18 20:11 ` Neil Horman
  0 siblings, 2 replies; 9+ messages in thread
From: Mark Rustad @ 2012-07-18 19:06 UTC (permalink / raw)
  To: netdev, davem, gaofeng, nhorman, eric.dumazet

This change eliminates an initialization-order hazard most
recently seen when netprio_cgroup is built into the kernel.

With thanks to Eric Dumazet for catching a bug.

Signed-off-by: Mark Rustad <mark.d.rustad@intel.com>
---

 net/core/dev.c           |    3 ++-
 net/core/net_namespace.c |    4 +++-
 2 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/net/core/dev.c b/net/core/dev.c
index 0f28a9e..1cb0d8a 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -6283,7 +6283,8 @@ static struct hlist_head *netdev_create_hash(void)
 /* Initialize per network namespace state */
 static int __net_init netdev_init(struct net *net)
 {
-	INIT_LIST_HEAD(&net->dev_base_head);
+	if (net != &init_net)
+		INIT_LIST_HEAD(&net->dev_base_head);
 
 	net->dev_name_head = netdev_create_hash();
 	if (net->dev_name_head == NULL)
diff --git a/net/core/net_namespace.c b/net/core/net_namespace.c
index dddbacb..42f1e1c 100644
--- a/net/core/net_namespace.c
+++ b/net/core/net_namespace.c
@@ -27,7 +27,9 @@ static DEFINE_MUTEX(net_mutex);
 LIST_HEAD(net_namespace_list);
 EXPORT_SYMBOL_GPL(net_namespace_list);
 
-struct net init_net;
+struct net init_net = {
+	.dev_base_head = LIST_HEAD_INIT(init_net.dev_base_head),
+};
 EXPORT_SYMBOL(init_net);
 
 #define INITIAL_NET_GEN_PTRS	13 /* +1 for len +2 for rcu_head */

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

* Re: [PATCH] net: Statically initialize init_net.dev_base_head
  2012-07-18 19:06 [PATCH] net: Statically initialize init_net.dev_base_head Mark Rustad
@ 2012-07-18 19:13 ` Eric Dumazet
  2012-07-18 20:32   ` David Miller
  2012-07-18 20:11 ` Neil Horman
  1 sibling, 1 reply; 9+ messages in thread
From: Eric Dumazet @ 2012-07-18 19:13 UTC (permalink / raw)
  To: Mark Rustad; +Cc: netdev, davem, gaofeng, nhorman

On Wed, 2012-07-18 at 12:06 -0700, Mark Rustad wrote:
> This change eliminates an initialization-order hazard most
> recently seen when netprio_cgroup is built into the kernel.
> 
> With thanks to Eric Dumazet for catching a bug.
> 
> Signed-off-by: Mark Rustad <mark.d.rustad@intel.com>
> ---
> 
>  net/core/dev.c           |    3 ++-
>  net/core/net_namespace.c |    4 +++-
>  2 files changed, 5 insertions(+), 2 deletions(-)

Acked-by: Eric Dumazet <edumazet@google.com>

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

* Re: [PATCH] net: Statically initialize init_net.dev_base_head
  2012-07-18 19:06 [PATCH] net: Statically initialize init_net.dev_base_head Mark Rustad
  2012-07-18 19:13 ` Eric Dumazet
@ 2012-07-18 20:11 ` Neil Horman
  2012-07-18 20:20   ` David Miller
  1 sibling, 1 reply; 9+ messages in thread
From: Neil Horman @ 2012-07-18 20:11 UTC (permalink / raw)
  To: Mark Rustad; +Cc: netdev, davem, gaofeng, eric.dumazet

On Wed, Jul 18, 2012 at 12:06:07PM -0700, Mark Rustad wrote:
> This change eliminates an initialization-order hazard most
> recently seen when netprio_cgroup is built into the kernel.
> 
> With thanks to Eric Dumazet for catching a bug.
> 
> Signed-off-by: Mark Rustad <mark.d.rustad@intel.com>
> ---
> 
>  net/core/dev.c           |    3 ++-
>  net/core/net_namespace.c |    4 +++-
>  2 files changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/net/core/dev.c b/net/core/dev.c
> index 0f28a9e..1cb0d8a 100644
> --- a/net/core/dev.c
> +++ b/net/core/dev.c
> @@ -6283,7 +6283,8 @@ static struct hlist_head *netdev_create_hash(void)
>  /* Initialize per network namespace state */
>  static int __net_init netdev_init(struct net *net)
>  {
> -	INIT_LIST_HEAD(&net->dev_base_head);
> +	if (net != &init_net)
> +		INIT_LIST_HEAD(&net->dev_base_head);
>  
>  	net->dev_name_head = netdev_create_hash();
>  	if (net->dev_name_head == NULL)
> diff --git a/net/core/net_namespace.c b/net/core/net_namespace.c
> index dddbacb..42f1e1c 100644
> --- a/net/core/net_namespace.c
> +++ b/net/core/net_namespace.c
> @@ -27,7 +27,9 @@ static DEFINE_MUTEX(net_mutex);
>  LIST_HEAD(net_namespace_list);
>  EXPORT_SYMBOL_GPL(net_namespace_list);
>  
> -struct net init_net;
> +struct net init_net = {
> +	.dev_base_head = LIST_HEAD_INIT(init_net.dev_base_head),
> +};
>  EXPORT_SYMBOL(init_net);
>  
>  #define INITIAL_NET_GEN_PTRS	13 /* +1 for len +2 for rcu_head */
> 
> 

I think dave was going to take John Fastabends patch from earlier today, but
this works just as well.  Long term I'm going to look into delaying
initzlization for cgroups, as it creates a strange initialization state when you
have a module_init routine registered.
Neil

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

* Re: [PATCH] net: Statically initialize init_net.dev_base_head
  2012-07-18 20:11 ` Neil Horman
@ 2012-07-18 20:20   ` David Miller
  2012-07-18 20:21     ` Neil Horman
  0 siblings, 1 reply; 9+ messages in thread
From: David Miller @ 2012-07-18 20:20 UTC (permalink / raw)
  To: nhorman; +Cc: mark.d.rustad, netdev, gaofeng, eric.dumazet

From: Neil Horman <nhorman@tuxdriver.com>
Date: Wed, 18 Jul 2012 16:11:49 -0400

> On Wed, Jul 18, 2012 at 12:06:07PM -0700, Mark Rustad wrote:
>> This change eliminates an initialization-order hazard most
>> recently seen when netprio_cgroup is built into the kernel.
>> 
>> With thanks to Eric Dumazet for catching a bug.
>> 
>> Signed-off-by: Mark Rustad <mark.d.rustad@intel.com>
 ...
> I think dave was going to take John Fastabends patch from earlier today, but
> this works just as well.  Long term I'm going to look into delaying
> initzlization for cgroups, as it creates a strange initialization state when you
> have a module_init routine registered.

Neil, any particular preference between John's and Mark's version
of the fix?

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

* Re: [PATCH] net: Statically initialize init_net.dev_base_head
  2012-07-18 20:20   ` David Miller
@ 2012-07-18 20:21     ` Neil Horman
  2012-07-18 20:31       ` John Fastabend
  0 siblings, 1 reply; 9+ messages in thread
From: Neil Horman @ 2012-07-18 20:21 UTC (permalink / raw)
  To: David Miller; +Cc: mark.d.rustad, netdev, gaofeng, eric.dumazet

On Wed, Jul 18, 2012 at 01:20:10PM -0700, David Miller wrote:
> From: Neil Horman <nhorman@tuxdriver.com>
> Date: Wed, 18 Jul 2012 16:11:49 -0400
> 
> > On Wed, Jul 18, 2012 at 12:06:07PM -0700, Mark Rustad wrote:
> >> This change eliminates an initialization-order hazard most
> >> recently seen when netprio_cgroup is built into the kernel.
> >> 
> >> With thanks to Eric Dumazet for catching a bug.
> >> 
> >> Signed-off-by: Mark Rustad <mark.d.rustad@intel.com>
>  ...
> > I think dave was going to take John Fastabends patch from earlier today, but
> > this works just as well.  Long term I'm going to look into delaying
> > initzlization for cgroups, as it creates a strange initialization state when you
> > have a module_init routine registered.
> 
> Neil, any particular preference between John's and Mark's version
> of the fix?
> 
I think they're both perfectly good.  If I had to choose I'd say Marks, just
because its done by initializing data, rather than adding more code to run every
time we create a cgroup.

Neil

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

* Re: [PATCH] net: Statically initialize init_net.dev_base_head
  2012-07-18 20:21     ` Neil Horman
@ 2012-07-18 20:31       ` John Fastabend
  2012-07-18 20:32         ` David Miller
  0 siblings, 1 reply; 9+ messages in thread
From: John Fastabend @ 2012-07-18 20:31 UTC (permalink / raw)
  To: Neil Horman, David Miller; +Cc: mark.d.rustad, netdev, gaofeng, eric.dumazet

On 7/18/2012 1:21 PM, Neil Horman wrote:
> On Wed, Jul 18, 2012 at 01:20:10PM -0700, David Miller wrote:
>> From: Neil Horman <nhorman@tuxdriver.com>
>> Date: Wed, 18 Jul 2012 16:11:49 -0400
>>
>>> On Wed, Jul 18, 2012 at 12:06:07PM -0700, Mark Rustad wrote:
>>>> This change eliminates an initialization-order hazard most
>>>> recently seen when netprio_cgroup is built into the kernel.
>>>>
>>>> With thanks to Eric Dumazet for catching a bug.
>>>>
>>>> Signed-off-by: Mark Rustad <mark.d.rustad@intel.com>
>>   ...
>>> I think dave was going to take John Fastabends patch from earlier today, but
>>> this works just as well.  Long term I'm going to look into delaying
>>> initzlization for cgroups, as it creates a strange initialization state when you
>>> have a module_init routine registered.
>>
>> Neil, any particular preference between John's and Mark's version
>> of the fix?
>>
> I think they're both perfectly good.  If I had to choose I'd say Marks, just
> because its done by initializing data, rather than adding more code to run every
> time we create a cgroup.
>
> Neil
>

Fine by me if we take this version instead.

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

* Re: [PATCH] net: Statically initialize init_net.dev_base_head
  2012-07-18 20:31       ` John Fastabend
@ 2012-07-18 20:32         ` David Miller
  2012-07-18 21:56           ` John Fastabend
  0 siblings, 1 reply; 9+ messages in thread
From: David Miller @ 2012-07-18 20:32 UTC (permalink / raw)
  To: john.r.fastabend; +Cc: nhorman, mark.d.rustad, netdev, gaofeng, eric.dumazet

From: John Fastabend <john.r.fastabend@intel.com>
Date: Wed, 18 Jul 2012 13:31:13 -0700

> On 7/18/2012 1:21 PM, Neil Horman wrote:
>> On Wed, Jul 18, 2012 at 01:20:10PM -0700, David Miller wrote:
>>> From: Neil Horman <nhorman@tuxdriver.com>
>>> Date: Wed, 18 Jul 2012 16:11:49 -0400
>>>
>>>> On Wed, Jul 18, 2012 at 12:06:07PM -0700, Mark Rustad wrote:
>>>>> This change eliminates an initialization-order hazard most
>>>>> recently seen when netprio_cgroup is built into the kernel.
>>>>>
>>>>> With thanks to Eric Dumazet for catching a bug.
>>>>>
>>>>> Signed-off-by: Mark Rustad <mark.d.rustad@intel.com>
>>>   ...
>>>> I think dave was going to take John Fastabends patch from earlier
>>>> today, but
>>>> this works just as well.  Long term I'm going to look into delaying
>>>> initzlization for cgroups, as it creates a strange initialization
>>>> state when you
>>>> have a module_init routine registered.
>>>
>>> Neil, any particular preference between John's and Mark's version
>>> of the fix?
>>>
>> I think they're both perfectly good.  If I had to choose I'd say
>> Marks, just
>> because its done by initializing data, rather than adding more code to
>> run every
>> time we create a cgroup.
>>
>> Neil
>>
> 
> Fine by me if we take this version instead.

I think that's what I'll do, sorry for all the trouble John :)

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

* Re: [PATCH] net: Statically initialize init_net.dev_base_head
  2012-07-18 19:13 ` Eric Dumazet
@ 2012-07-18 20:32   ` David Miller
  0 siblings, 0 replies; 9+ messages in thread
From: David Miller @ 2012-07-18 20:32 UTC (permalink / raw)
  To: eric.dumazet; +Cc: mark.d.rustad, netdev, gaofeng, nhorman

From: Eric Dumazet <eric.dumazet@gmail.com>
Date: Wed, 18 Jul 2012 21:13:29 +0200

> On Wed, 2012-07-18 at 12:06 -0700, Mark Rustad wrote:
>> This change eliminates an initialization-order hazard most
>> recently seen when netprio_cgroup is built into the kernel.
>> 
>> With thanks to Eric Dumazet for catching a bug.
>> 
>> Signed-off-by: Mark Rustad <mark.d.rustad@intel.com>
>> ---
>> 
>>  net/core/dev.c           |    3 ++-
>>  net/core/net_namespace.c |    4 +++-
>>  2 files changed, 5 insertions(+), 2 deletions(-)
> 
> Acked-by: Eric Dumazet <edumazet@google.com>

Applied, thanks everyone.

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

* Re: [PATCH] net: Statically initialize init_net.dev_base_head
  2012-07-18 20:32         ` David Miller
@ 2012-07-18 21:56           ` John Fastabend
  0 siblings, 0 replies; 9+ messages in thread
From: John Fastabend @ 2012-07-18 21:56 UTC (permalink / raw)
  To: David Miller; +Cc: nhorman, mark.d.rustad, netdev, gaofeng, eric.dumazet

On 7/18/2012 1:32 PM, David Miller wrote:
> From: John Fastabend <john.r.fastabend@intel.com>
> Date: Wed, 18 Jul 2012 13:31:13 -0700
>
>> On 7/18/2012 1:21 PM, Neil Horman wrote:
>>> On Wed, Jul 18, 2012 at 01:20:10PM -0700, David Miller wrote:
>>>> From: Neil Horman <nhorman@tuxdriver.com>
>>>> Date: Wed, 18 Jul 2012 16:11:49 -0400
>>>>
>>>>> On Wed, Jul 18, 2012 at 12:06:07PM -0700, Mark Rustad wrote:
>>>>>> This change eliminates an initialization-order hazard most
>>>>>> recently seen when netprio_cgroup is built into the kernel.
>>>>>>
>>>>>> With thanks to Eric Dumazet for catching a bug.
>>>>>>
>>>>>> Signed-off-by: Mark Rustad <mark.d.rustad@intel.com>
>>>>    ...
>>>>> I think dave was going to take John Fastabends patch from earlier
>>>>> today, but
>>>>> this works just as well.  Long term I'm going to look into delaying
>>>>> initzlization for cgroups, as it creates a strange initialization
>>>>> state when you
>>>>> have a module_init routine registered.
>>>>
>>>> Neil, any particular preference between John's and Mark's version
>>>> of the fix?
>>>>
>>> I think they're both perfectly good.  If I had to choose I'd say
>>> Marks, just
>>> because its done by initializing data, rather than adding more code to
>>> run every
>>> time we create a cgroup.
>>>
>>> Neil
>>>
>>
>> Fine by me if we take this version instead.
>
> I think that's what I'll do, sorry for all the trouble John :)
>

No problem. For what its worth verified this resolved the netprio
issue on my system as expected.

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

end of thread, other threads:[~2012-07-18 21:56 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-07-18 19:06 [PATCH] net: Statically initialize init_net.dev_base_head Mark Rustad
2012-07-18 19:13 ` Eric Dumazet
2012-07-18 20:32   ` David Miller
2012-07-18 20:11 ` Neil Horman
2012-07-18 20:20   ` David Miller
2012-07-18 20:21     ` Neil Horman
2012-07-18 20:31       ` John Fastabend
2012-07-18 20:32         ` David Miller
2012-07-18 21:56           ` John Fastabend

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.