diff options
Diffstat (limited to 'kernel/locking/lockdep.c')
-rw-r--r-- | kernel/locking/lockdep.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c index 12e38c213b70..a95e5d1f4a9c 100644 --- a/kernel/locking/lockdep.c +++ b/kernel/locking/lockdep.c | |||
@@ -3262,10 +3262,17 @@ static int __lock_acquire(struct lockdep_map *lock, unsigned int subclass, | |||
3262 | if (depth) { | 3262 | if (depth) { |
3263 | hlock = curr->held_locks + depth - 1; | 3263 | hlock = curr->held_locks + depth - 1; |
3264 | if (hlock->class_idx == class_idx && nest_lock) { | 3264 | if (hlock->class_idx == class_idx && nest_lock) { |
3265 | if (hlock->references) | 3265 | if (hlock->references) { |
3266 | /* | ||
3267 | * Check: unsigned int references:12, overflow. | ||
3268 | */ | ||
3269 | if (DEBUG_LOCKS_WARN_ON(hlock->references == (1 << 12)-1)) | ||
3270 | return 0; | ||
3271 | |||
3266 | hlock->references++; | 3272 | hlock->references++; |
3267 | else | 3273 | } else { |
3268 | hlock->references = 2; | 3274 | hlock->references = 2; |
3275 | } | ||
3269 | 3276 | ||
3270 | return 1; | 3277 | return 1; |
3271 | } | 3278 | } |