diff options
Diffstat (limited to 'kernel/lockdep.c')
-rw-r--r-- | kernel/lockdep.c | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/kernel/lockdep.c b/kernel/lockdep.c index ba7156ac70c1..b739be2a6dc9 100644 --- a/kernel/lockdep.c +++ b/kernel/lockdep.c | |||
@@ -575,6 +575,8 @@ static noinline int print_circular_bug_tail(void) | |||
575 | return 0; | 575 | return 0; |
576 | } | 576 | } |
577 | 577 | ||
578 | #define RECURSION_LIMIT 40 | ||
579 | |||
578 | static int noinline print_infinite_recursion_bug(void) | 580 | static int noinline print_infinite_recursion_bug(void) |
579 | { | 581 | { |
580 | __raw_spin_unlock(&hash_lock); | 582 | __raw_spin_unlock(&hash_lock); |
@@ -595,7 +597,7 @@ check_noncircular(struct lock_class *source, unsigned int depth) | |||
595 | debug_atomic_inc(&nr_cyclic_check_recursions); | 597 | debug_atomic_inc(&nr_cyclic_check_recursions); |
596 | if (depth > max_recursion_depth) | 598 | if (depth > max_recursion_depth) |
597 | max_recursion_depth = depth; | 599 | max_recursion_depth = depth; |
598 | if (depth >= 20) | 600 | if (depth >= RECURSION_LIMIT) |
599 | return print_infinite_recursion_bug(); | 601 | return print_infinite_recursion_bug(); |
600 | /* | 602 | /* |
601 | * Check this lock's dependency list: | 603 | * Check this lock's dependency list: |
@@ -645,7 +647,7 @@ find_usage_forwards(struct lock_class *source, unsigned int depth) | |||
645 | 647 | ||
646 | if (depth > max_recursion_depth) | 648 | if (depth > max_recursion_depth) |
647 | max_recursion_depth = depth; | 649 | max_recursion_depth = depth; |
648 | if (depth >= 20) | 650 | if (depth >= RECURSION_LIMIT) |
649 | return print_infinite_recursion_bug(); | 651 | return print_infinite_recursion_bug(); |
650 | 652 | ||
651 | debug_atomic_inc(&nr_find_usage_forwards_checks); | 653 | debug_atomic_inc(&nr_find_usage_forwards_checks); |
@@ -684,7 +686,7 @@ find_usage_backwards(struct lock_class *source, unsigned int depth) | |||
684 | 686 | ||
685 | if (depth > max_recursion_depth) | 687 | if (depth > max_recursion_depth) |
686 | max_recursion_depth = depth; | 688 | max_recursion_depth = depth; |
687 | if (depth >= 20) | 689 | if (depth >= RECURSION_LIMIT) |
688 | return print_infinite_recursion_bug(); | 690 | return print_infinite_recursion_bug(); |
689 | 691 | ||
690 | debug_atomic_inc(&nr_find_usage_backwards_checks); | 692 | debug_atomic_inc(&nr_find_usage_backwards_checks); |
@@ -1114,8 +1116,6 @@ static int count_matching_names(struct lock_class *new_class) | |||
1114 | return count + 1; | 1116 | return count + 1; |
1115 | } | 1117 | } |
1116 | 1118 | ||
1117 | extern void __error_too_big_MAX_LOCKDEP_SUBCLASSES(void); | ||
1118 | |||
1119 | /* | 1119 | /* |
1120 | * Register a lock's class in the hash-table, if the class is not present | 1120 | * Register a lock's class in the hash-table, if the class is not present |
1121 | * yet. Otherwise we look it up. We cache the result in the lock object | 1121 | * yet. Otherwise we look it up. We cache the result in the lock object |
@@ -1153,8 +1153,7 @@ look_up_lock_class(struct lockdep_map *lock, unsigned int subclass) | |||
1153 | * (or spin_lock_init()) call - which acts as the key. For static | 1153 | * (or spin_lock_init()) call - which acts as the key. For static |
1154 | * locks we use the lock object itself as the key. | 1154 | * locks we use the lock object itself as the key. |
1155 | */ | 1155 | */ |
1156 | if (sizeof(struct lock_class_key) > sizeof(struct lock_class)) | 1156 | BUILD_BUG_ON(sizeof(struct lock_class_key) > sizeof(struct lock_class)); |
1157 | __error_too_big_MAX_LOCKDEP_SUBCLASSES(); | ||
1158 | 1157 | ||
1159 | key = lock->key->subkeys + subclass; | 1158 | key = lock->key->subkeys + subclass; |
1160 | 1159 | ||