]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blob - releases/2.6.32.12/lockdep-fix-incorrect-percpu-usage.patch
Fixes for 5.10
[thirdparty/kernel/stable-queue.git] / releases / 2.6.32.12 / lockdep-fix-incorrect-percpu-usage.patch
1 From mathieu.desnoyers@efficios.com Wed Apr 21 15:39:34 2010
2 From: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 Date: Tue, 20 Apr 2010 10:33:50 -0400
4 Subject: lockdep: fix incorrect percpu usage
5 To: Greg KH <greg@kroah.com>
6 Cc: Tejun Heo <tj@kernel.org>, Randy Dunlap <randy.dunlap@oracle.com>, Greg Kroah-Hartman <gregkh@suse.de>, Peter Zijlstra <peterz@infradead.org>, stable <stable@kernel.org>, Rusty Russell <rusty@rustcorp.com.au>, linux-kernel@vger.kernel.org, Steven Rostedt <rostedt@goodmis.org>, Eric Dumazet <dada1@cosmosbay.com>, Ingo Molnar <mingo@elte.hu>, Linus Torvalds <torvalds@linux-foundation.org>, Andrew Morton <akpm@linux-foundation.org>
7 Message-ID: <20100420143350.GA14622@Krystal>
8 Content-Disposition: inline
9
10 From: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11
12 The mainline kernel as of 2.6.34-rc5 is not affected by this problem because
13 commit 10fad5e46f6c7bdfb01b1a012380a38e3c6ab346 fixed it by refactoring.
14
15 lockdep fix incorrect percpu usage
16
17 Should use per_cpu_ptr() to obfuscate the per cpu pointers (RELOC_HIDE is needed
18 for per cpu pointers).
19
20 git blame points to commit:
21
22 lockdep.c: commit 8e18257d29238311e82085152741f0c3aa18b74d
23
24 But it's really just moving the code around. But it's enough to say that the
25 problems appeared before Jul 19 01:48:54 2007, which brings us back to 2.6.23.
26
27 It should be applied to stable 2.6.23.x to 2.6.33.x (or whichever of these
28 stable branches are still maintained).
29
30 (tested on 2.6.33.1 x86_64)
31
32 Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
33 CC: Randy Dunlap <randy.dunlap@oracle.com>
34 CC: Eric Dumazet <dada1@cosmosbay.com>
35 CC: Rusty Russell <rusty@rustcorp.com.au>
36 CC: Peter Zijlstra <a.p.zijlstra@chello.nl>
37 CC: Tejun Heo <tj@kernel.org>
38 CC: Ingo Molnar <mingo@elte.hu>
39 CC: Andrew Morton <akpm@linux-foundation.org>
40 CC: Linus Torvalds <torvalds@linux-foundation.org>
41 CC: Greg Kroah-Hartman <gregkh@suse.de>
42 CC: Steven Rostedt <rostedt@goodmis.org>
43 Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
44
45 ---
46 kernel/lockdep.c | 6 +++---
47 1 file changed, 3 insertions(+), 3 deletions(-)
48
49 --- a/kernel/lockdep.c
50 +++ b/kernel/lockdep.c
51 @@ -591,9 +591,9 @@ static int static_obj(void *obj)
52 * percpu var?
53 */
54 for_each_possible_cpu(i) {
55 - start = (unsigned long) &__per_cpu_start + per_cpu_offset(i);
56 - end = (unsigned long) &__per_cpu_start + PERCPU_ENOUGH_ROOM
57 - + per_cpu_offset(i);
58 + start = (unsigned long) per_cpu_ptr(&__per_cpu_start, i);
59 + end = (unsigned long) per_cpu_ptr(&__per_cpu_start, i)
60 + + PERCPU_ENOUGH_ROOM;
61
62 if ((addr >= start) && (addr < end))
63 return 1;