lkml.org 
[lkml]   [2010]   [Apr]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectRe: [Stable-review] [170/197] lockdep: fix incorrect percpu usage
* Nikola Ciprich (nikola.ciprich@linuxbox.cz) wrote:
> Hi,
> hmm,
> this one seems to break compilation for me:
> kernel/lockdep.c: In function ‘static_obj’:
> kernel/lockdep.c:595: error: invalid use of array with unspecified bounds
> kernel/lockdep.c:595: error: invalid use of array with unspecified bounds
> make[1]: *** [kernel/lockdep.o] Error 1
>
> I'm using gcc-4.1.2
> regards
> nik
>

Oh, you are right. I tweaked a few config options and got your error. Here is an
updated patch.

Greg, this v2 should replace the original patch you have. Sorry about the
trouble.

lockdep fix incorrect percpu usage (v2)

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

Changelog since v1:
- Move PERCPU_ENOUGH_ROOM outside of per_cpu_ptr(), where it belongs.

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.

This patch applies to mainline as of 2.6.34-rc2. It also should be applied to
stable 2.6.23.x to 2.6.33.x (or whichever of these stable branches are still
maintained).

(based on 2.6.33.1, also applies to 2.6.34-rc2 -tip)

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-04-22 17:51:28.000000000 -0400
+++ linux-2.6-lttng/kernel/lockdep.c 2010-04-22 17:55:02.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, i)
+ + PERCPU_ENOUGH_ROOM;

if ((addr >= start) && (addr < end))
return 1;
--
Mathieu Desnoyers
Operating System Efficiency R&D Consultant
EfficiOS Inc.
http://www.efficios.com
[unhandled content-type:application/pgp-signature]
\
 
 \ /
  Last update: 2010-04-23 00:05    [W:1.180 / U:0.328 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site