Messages in this thread Patch in this message | | | Date | Thu, 22 Apr 2010 18:02:49 -0400 | From | Mathieu Desnoyers <> | Subject | Re: [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] | |