summaryrefslogtreecommitdiff
path: root/kernel/lockdep.c
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2006-07-03 00:24:51 -0700
committerLinus Torvalds <torvalds@g5.osdl.org>2006-07-03 15:27:04 -0700
commit6c9076ec9cd448f43bbda871352a7067f456ee26 (patch)
tree8691366aa511f20146eb9cfe942e0d94c4136e1a /kernel/lockdep.c
parentfbb9ce9530fd9b66096d5187fa6a115d16d9746c (diff)
[PATCH] lockdep: allow read_lock() recursion of same class
From: Ingo Molnar <mingo@elte.hu> lockdep so far only allowed read-recursion for the same lock instance. This is enough in the overwhelming majority of cases, but a hostap case triggered and reported by Miles Lane relies on same-class different-instance recursion. So we relax the restriction on read-lock recursion. (This change does not allow rwsem read-recursion, which is still forbidden.) Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'kernel/lockdep.c')
-rw-r--r--kernel/lockdep.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/kernel/lockdep.c b/kernel/lockdep.c
index dd0580910a97..f32ca78c198d 100644
--- a/kernel/lockdep.c
+++ b/kernel/lockdep.c
@@ -843,10 +843,9 @@ check_deadlock(struct task_struct *curr, struct held_lock *next,
continue;
/*
* Allow read-after-read recursion of the same
- * lock instance (i.e. read_lock(lock)+read_lock(lock)):
+ * lock class (i.e. read_lock(lock)+read_lock(lock)):
*/
- if ((read == 2) && prev->read &&
- (prev->instance == next_instance))
+ if ((read == 2) && prev->read)
return 2;
return print_deadlock_bug(curr, prev, next);
}