All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] lockdep fix incorrect percpu usage
@ 2010-03-30  3:34 Mathieu Desnoyers
  2010-03-30  8:47 ` Peter Zijlstra
  0 siblings, 1 reply; 9+ messages in thread
From: Mathieu Desnoyers @ 2010-03-30  3:34 UTC (permalink / raw)
  To: linux-kernel
  Cc: Randy Dunlap, Eric Dumazet, Rusty Russell, Peter Zijlstra,
	Tejun Heo, Ingo Molnar, Andrew Morton, Linus Torvalds,
	Greg Kroah-Hartman, Steven Rostedt, stable

Should use per_cpu_ptr() to obfuscate the per cpu pointers (RELOC_HIDE is needed
for per cpu pointers).

git blame points to commit:

lockdep.c: commit 8e18257d29238311e82085152741f0c3aa18b74d

But it's really just moving the code around. But it's enough to say that the
problems appeared before Jul 19 01:48:54 2007, which brings us back to 2.6.23.

So it should be applied to stable 2.6.23.x to 2.6.33.x (or whichever of these
stable branches are still maintained) and to mainline 2.6.34-rc2.

This patch should be queued for the stable branch.
(tested on 2.6.33.1 x86_64)

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
CC: Randy Dunlap <randy.dunlap@oracle.com>
CC: Eric Dumazet <dada1@cosmosbay.com>
CC: Rusty Russell <rusty@rustcorp.com.au>
CC: Peter Zijlstra <a.p.zijlstra@chello.nl>
CC: Tejun Heo <tj@kernel.org>
CC: Ingo Molnar <mingo@elte.hu>
CC: Andrew Morton <akpm@linux-foundation.org>
CC: Linus Torvalds <torvalds@linux-foundation.org>
CC: Greg Kroah-Hartman <gregkh@suse.de>
CC: Steven Rostedt <rostedt@goodmis.org>
CC: stable <stable@kernel.org>
---
 kernel/lockdep.c |    6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

Index: linux-2.6-lttng/kernel/lockdep.c
===================================================================
--- linux-2.6-lttng.orig/kernel/lockdep.c	2010-03-29 23:54:31.000000000 -0400
+++ linux-2.6-lttng/kernel/lockdep.c	2010-03-29 23:54:38.000000000 -0400
@@ -609,9 +609,9 @@ static int static_obj(void *obj)
 	 * percpu var?
 	 */
 	for_each_possible_cpu(i) {
-		start = (unsigned long) &__per_cpu_start + per_cpu_offset(i);
-		end   = (unsigned long) &__per_cpu_start + PERCPU_ENOUGH_ROOM
-					+ per_cpu_offset(i);
+		start = (unsigned long) per_cpu_ptr(&__per_cpu_start, i);
+		end   = (unsigned long) per_cpu_ptr(&__per_cpu_start
+						    + PERCPU_ENOUGH_ROOM, i);
 
 		if ((addr >= start) && (addr < end))
 			return 1;

-- 
Mathieu Desnoyers
Operating System Efficiency R&D Consultant
EfficiOS Inc.
http://www.efficios.com

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

* Re: [PATCH] lockdep fix incorrect percpu usage
  2010-03-30  3:34 [PATCH] lockdep fix incorrect percpu usage Mathieu Desnoyers
@ 2010-03-30  8:47 ` Peter Zijlstra
  2010-03-30 13:45   ` Mathieu Desnoyers
  0 siblings, 1 reply; 9+ messages in thread
From: Peter Zijlstra @ 2010-03-30  8:47 UTC (permalink / raw)
  To: Mathieu Desnoyers
  Cc: linux-kernel, Randy Dunlap, Eric Dumazet, Rusty Russell,
	Tejun Heo, Ingo Molnar, Andrew Morton, Linus Torvalds,
	Greg Kroah-Hartman, Steven Rostedt, stable

On Mon, 2010-03-29 at 23:34 -0400, Mathieu Desnoyers wrote:
> Should use per_cpu_ptr() to obfuscate the per cpu pointers (RELOC_HIDE is needed
> for per cpu pointers).
> 
> git blame points to commit:
> 
> lockdep.c: commit 8e18257d29238311e82085152741f0c3aa18b74d
> 
> But it's really just moving the code around. But it's enough to say that the
> problems appeared before Jul 19 01:48:54 2007, which brings us back to 2.6.23.
> 
> So it should be applied to stable 2.6.23.x to 2.6.33.x (or whichever of these
> stable branches are still maintained) and to mainline 2.6.34-rc2.

well, definately not to mainline, since that code is utterly busted in
mainline due to recent per-cpu changes.

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

* Re: [PATCH] lockdep fix incorrect percpu usage
  2010-03-30  8:47 ` Peter Zijlstra
@ 2010-03-30 13:45   ` Mathieu Desnoyers
  2010-03-30 14:25     ` Peter Zijlstra
  0 siblings, 1 reply; 9+ messages in thread
From: Mathieu Desnoyers @ 2010-03-30 13:45 UTC (permalink / raw)
  To: Peter Zijlstra
  Cc: linux-kernel, Randy Dunlap, Eric Dumazet, Rusty Russell,
	Tejun Heo, Ingo Molnar, Andrew Morton, Linus Torvalds,
	Greg Kroah-Hartman, Steven Rostedt, stable

* Peter Zijlstra (peterz@infradead.org) wrote:
> On Mon, 2010-03-29 at 23:34 -0400, Mathieu Desnoyers wrote:
> > Should use per_cpu_ptr() to obfuscate the per cpu pointers (RELOC_HIDE is needed
> > for per cpu pointers).
> > 
> > git blame points to commit:
> > 
> > lockdep.c: commit 8e18257d29238311e82085152741f0c3aa18b74d
> > 
> > But it's really just moving the code around. But it's enough to say that the
> > problems appeared before Jul 19 01:48:54 2007, which brings us back to 2.6.23.
> > 
> > So it should be applied to stable 2.6.23.x to 2.6.33.x (or whichever of these
> > stable branches are still maintained) and to mainline 2.6.34-rc2.
> 
> well, definately not to mainline, since that code is utterly busted in
> mainline due to recent per-cpu changes.

How recent ? I'm based on 

commit f57d4e859a8acd63f878cd0534ec4b990b1710dc
Merge: 0528faa... eed6351...
Author: Ingo Molnar <mingo@elte.hu>
Date:   Mon Mar 29 18:56:00 2010 +0200

from -tip and I see the problem there, both in module.c and lockdep.c.

Thanks,

Mathieu


-- 
Mathieu Desnoyers
Operating System Efficiency R&D Consultant
EfficiOS Inc.
http://www.efficios.com

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

* Re: [PATCH] lockdep fix incorrect percpu usage
  2010-03-30 13:45   ` Mathieu Desnoyers
@ 2010-03-30 14:25     ` Peter Zijlstra
  2010-03-30 15:05       ` Mathieu Desnoyers
  0 siblings, 1 reply; 9+ messages in thread
From: Peter Zijlstra @ 2010-03-30 14:25 UTC (permalink / raw)
  To: Mathieu Desnoyers
  Cc: linux-kernel, Randy Dunlap, Eric Dumazet, Rusty Russell,
	Tejun Heo, Ingo Molnar, Andrew Morton, Linus Torvalds,
	Greg Kroah-Hartman, Steven Rostedt, stable

On Tue, 2010-03-30 at 09:45 -0400, Mathieu Desnoyers wrote:
> * Peter Zijlstra (peterz@infradead.org) wrote:
> > On Mon, 2010-03-29 at 23:34 -0400, Mathieu Desnoyers wrote:
> > > Should use per_cpu_ptr() to obfuscate the per cpu pointers (RELOC_HIDE is needed
> > > for per cpu pointers).
> > > 
> > > git blame points to commit:
> > > 
> > > lockdep.c: commit 8e18257d29238311e82085152741f0c3aa18b74d
> > > 
> > > But it's really just moving the code around. But it's enough to say that the
> > > problems appeared before Jul 19 01:48:54 2007, which brings us back to 2.6.23.
> > > 
> > > So it should be applied to stable 2.6.23.x to 2.6.33.x (or whichever of these
> > > stable branches are still maintained) and to mainline 2.6.34-rc2.
> > 
> > well, definately not to mainline, since that code is utterly busted in
> > mainline due to recent per-cpu changes.
> 
> How recent ? I'm based on 
> 
> commit f57d4e859a8acd63f878cd0534ec4b990b1710dc
> Merge: 0528faa... eed6351...
> Author: Ingo Molnar <mingo@elte.hu>
> Date:   Mon Mar 29 18:56:00 2010 +0200
> 
> from -tip and I see the problem there, both in module.c and lockdep.c.

Yeah, its basically been busted since the early merge window period,
hopefully Tejun's patches will make it in soon:

  http://lkml.org/lkml/2010/3/10/79




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

* Re: [PATCH] lockdep fix incorrect percpu usage
  2010-03-30 14:25     ` Peter Zijlstra
@ 2010-03-30 15:05       ` Mathieu Desnoyers
  2010-03-31  2:43         ` Tejun Heo
  0 siblings, 1 reply; 9+ messages in thread
From: Mathieu Desnoyers @ 2010-03-30 15:05 UTC (permalink / raw)
  To: Peter Zijlstra
  Cc: linux-kernel, Randy Dunlap, Eric Dumazet, Rusty Russell,
	Tejun Heo, Ingo Molnar, Andrew Morton, Linus Torvalds,
	Greg Kroah-Hartman, Steven Rostedt, stable

* Peter Zijlstra (peterz@infradead.org) wrote:
> On Tue, 2010-03-30 at 09:45 -0400, Mathieu Desnoyers wrote:
> > * Peter Zijlstra (peterz@infradead.org) wrote:
> > > On Mon, 2010-03-29 at 23:34 -0400, Mathieu Desnoyers wrote:
> > > > Should use per_cpu_ptr() to obfuscate the per cpu pointers (RELOC_HIDE is needed
> > > > for per cpu pointers).
> > > > 
> > > > git blame points to commit:
> > > > 
> > > > lockdep.c: commit 8e18257d29238311e82085152741f0c3aa18b74d
> > > > 
> > > > But it's really just moving the code around. But it's enough to say that the
> > > > problems appeared before Jul 19 01:48:54 2007, which brings us back to 2.6.23.
> > > > 
> > > > So it should be applied to stable 2.6.23.x to 2.6.33.x (or whichever of these
> > > > stable branches are still maintained) and to mainline 2.6.34-rc2.
> > > 
> > > well, definately not to mainline, since that code is utterly busted in
> > > mainline due to recent per-cpu changes.
> > 
> > How recent ? I'm based on 
> > 
> > commit f57d4e859a8acd63f878cd0534ec4b990b1710dc
> > Merge: 0528faa... eed6351...
> > Author: Ingo Molnar <mingo@elte.hu>
> > Date:   Mon Mar 29 18:56:00 2010 +0200
> > 
> > from -tip and I see the problem there, both in module.c and lockdep.c.
> 
> Yeah, its basically been busted since the early merge window period,
> hopefully Tejun's patches will make it in soon:
> 
>   http://lkml.org/lkml/2010/3/10/79

I see. These patches are "on their way" to mainline, so it's better not to
create conflicts. So the lockdep patch should only be applied to -stable, but
separate module.c patch should apply to both -stable and mainline. Am I
correct ?

Thanks,

Mathieu


> 
> 
> 

-- 
Mathieu Desnoyers
Operating System Efficiency R&D Consultant
EfficiOS Inc.
http://www.efficios.com

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

* Re: [PATCH] lockdep fix incorrect percpu usage
  2010-03-30 15:05       ` Mathieu Desnoyers
@ 2010-03-31  2:43         ` Tejun Heo
  2010-04-19 18:29           ` [stable] " Greg KH
  0 siblings, 1 reply; 9+ messages in thread
From: Tejun Heo @ 2010-03-31  2:43 UTC (permalink / raw)
  To: Mathieu Desnoyers
  Cc: Peter Zijlstra, linux-kernel, Randy Dunlap, Eric Dumazet,
	Rusty Russell, Ingo Molnar, Andrew Morton, Linus Torvalds,
	Greg Kroah-Hartman, Steven Rostedt, stable

On 03/31/2010 12:05 AM, Mathieu Desnoyers wrote:
> I see. These patches are "on their way" to mainline, so it's better not to
> create conflicts. So the lockdep patch should only be applied to -stable, but
> separate module.c patch should apply to both -stable and mainline. Am I
> correct ?

I'll push proper fixes to mainline in a few days.  For -stable, yeah,
probably.

Thanks.

-- 
tejun

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

* Re: [stable] [PATCH] lockdep fix incorrect percpu usage
  2010-03-31  2:43         ` Tejun Heo
@ 2010-04-19 18:29           ` Greg KH
  2010-04-20 14:33             ` Mathieu Desnoyers
  0 siblings, 1 reply; 9+ messages in thread
From: Greg KH @ 2010-04-19 18:29 UTC (permalink / raw)
  To: Tejun Heo
  Cc: Mathieu Desnoyers, Randy Dunlap, Greg Kroah-Hartman,
	Peter Zijlstra, stable, Rusty Russell, linux-kernel,
	Steven Rostedt, Eric Dumazet, Ingo Molnar, Linus Torvalds,
	Andrew Morton

On Wed, Mar 31, 2010 at 11:43:16AM +0900, Tejun Heo wrote:
> On 03/31/2010 12:05 AM, Mathieu Desnoyers wrote:
> > I see. These patches are "on their way" to mainline, so it's better not to
> > create conflicts. So the lockdep patch should only be applied to -stable, but
> > separate module.c patch should apply to both -stable and mainline. Am I
> > correct ?
> 
> I'll push proper fixes to mainline in a few days.  For -stable, yeah,
> probably.

Ok, did a patch ever end up in Linus's tree for this that I can pull
into the -stable releases?

thanks,

greg k-h

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

* Re: [stable] [PATCH] lockdep fix incorrect percpu usage
  2010-04-19 18:29           ` [stable] " Greg KH
@ 2010-04-20 14:33             ` Mathieu Desnoyers
  2010-04-21 10:52               ` Tejun Heo
  0 siblings, 1 reply; 9+ messages in thread
From: Mathieu Desnoyers @ 2010-04-20 14:33 UTC (permalink / raw)
  To: Greg KH
  Cc: Tejun Heo, Randy Dunlap, Greg Kroah-Hartman, Peter Zijlstra,
	stable, Rusty Russell, linux-kernel, Steven Rostedt,
	Eric Dumazet, Ingo Molnar, Linus Torvalds, Andrew Morton

* Greg KH (greg@kroah.com) wrote:
> On Wed, Mar 31, 2010 at 11:43:16AM +0900, Tejun Heo wrote:
> > On 03/31/2010 12:05 AM, Mathieu Desnoyers wrote:
> > > I see. These patches are "on their way" to mainline, so it's better not to
> > > create conflicts. So the lockdep patch should only be applied to -stable, but
> > > separate module.c patch should apply to both -stable and mainline. Am I
> > > correct ?
> > 
> > I'll push proper fixes to mainline in a few days.  For -stable, yeah,
> > probably.
> 
> Ok, did a patch ever end up in Linus's tree for this that I can pull
> into the -stable releases?
> 
> thanks,
> 
> greg k-h

Hi Greg,

Here is the updated patch, stating which mainline commit from Tejun fixes it by
refactoring the code. I'll leave the decision to pick this targeted fix or Tejun
refactoring into -stable up to you.


lockdep fix incorrect percpu usage

Should use per_cpu_ptr() to obfuscate the per cpu pointers (RELOC_HIDE is needed
for per cpu pointers).

git blame points to commit:

lockdep.c: commit 8e18257d29238311e82085152741f0c3aa18b74d

But it's really just moving the code around. But it's enough to say that the
problems appeared before Jul 19 01:48:54 2007, which brings us back to 2.6.23.

It should be applied to stable 2.6.23.x to 2.6.33.x (or whichever of these
stable branches are still maintained).

The mainline kernel as of 2.6.34-rc5 is not affected by this problem because
commit 10fad5e46f6c7bdfb01b1a012380a38e3c6ab346 fixed it by refactoring.

(tested on 2.6.33.1 x86_64)

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
CC: Randy Dunlap <randy.dunlap@oracle.com>
CC: Eric Dumazet <dada1@cosmosbay.com>
CC: Rusty Russell <rusty@rustcorp.com.au>
CC: Peter Zijlstra <a.p.zijlstra@chello.nl>
CC: Tejun Heo <tj@kernel.org>
CC: Ingo Molnar <mingo@elte.hu>
CC: Andrew Morton <akpm@linux-foundation.org>
CC: Linus Torvalds <torvalds@linux-foundation.org>
CC: Greg Kroah-Hartman <gregkh@suse.de>
CC: Steven Rostedt <rostedt@goodmis.org>
CC: stable <stable@kernel.org>
---
 kernel/lockdep.c |    6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

Index: linux.trees.git/kernel/lockdep.c
===================================================================
--- linux.trees.git.orig/kernel/lockdep.c	2010-03-19 16:18:34.000000000 -0400
+++ linux.trees.git/kernel/lockdep.c	2010-03-30 09:48:43.000000000 -0400
@@ -600,9 +600,9 @@ static int static_obj(void *obj)
 	 * percpu var?
 	 */
 	for_each_possible_cpu(i) {
-		start = (unsigned long) &__per_cpu_start + per_cpu_offset(i);
-		end   = (unsigned long) &__per_cpu_start + PERCPU_ENOUGH_ROOM
-					+ per_cpu_offset(i);
+		start = (unsigned long) per_cpu_ptr(&__per_cpu_start, i);
+		end   = (unsigned long) per_cpu_ptr(&__per_cpu_start
+						    + PERCPU_ENOUGH_ROOM, i);
 
 		if ((addr >= start) && (addr < end))
 			return 1;


-- 
Mathieu Desnoyers
Operating System Efficiency R&D Consultant
EfficiOS Inc.
http://www.efficios.com

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

* Re: [stable] [PATCH] lockdep fix incorrect percpu usage
  2010-04-20 14:33             ` Mathieu Desnoyers
@ 2010-04-21 10:52               ` Tejun Heo
  0 siblings, 0 replies; 9+ messages in thread
From: Tejun Heo @ 2010-04-21 10:52 UTC (permalink / raw)
  To: Mathieu Desnoyers
  Cc: Greg KH, Randy Dunlap, Greg Kroah-Hartman, Peter Zijlstra,
	stable, Rusty Russell, linux-kernel, Steven Rostedt,
	Eric Dumazet, Ingo Molnar, Linus Torvalds, Andrew Morton

On 04/20/2010 04:33 PM, Mathieu Desnoyers wrote:
> Here is the updated patch, stating which mainline commit from Tejun
> fixes it by refactoring the code. I'll leave the decision to pick
> this targeted fix or Tejun refactoring into -stable up to you.

Ditto, please take this one.

Thanks.

-- 
tejun

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

end of thread, other threads:[~2010-04-22  8:31 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-03-30  3:34 [PATCH] lockdep fix incorrect percpu usage Mathieu Desnoyers
2010-03-30  8:47 ` Peter Zijlstra
2010-03-30 13:45   ` Mathieu Desnoyers
2010-03-30 14:25     ` Peter Zijlstra
2010-03-30 15:05       ` Mathieu Desnoyers
2010-03-31  2:43         ` Tejun Heo
2010-04-19 18:29           ` [stable] " Greg KH
2010-04-20 14:33             ` Mathieu Desnoyers
2010-04-21 10:52               ` Tejun Heo

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.