trivial: Correct print_tainted routine name in comment
[linux-block.git] / kernel / lockdep.c
index 0bb246e21cd792eb88ac3fc45495bbde654ca01b..f74d2d7aa605801f70209cc61f434bdfbc3a2663 100644 (file)
@@ -399,7 +399,6 @@ unsigned int nr_hardirq_chains;
 unsigned int nr_softirq_chains;
 unsigned int nr_process_chains;
 unsigned int max_lockdep_depth;
-unsigned int max_recursion_depth;
 
 #ifdef CONFIG_DEBUG_LOCKDEP
 /*
@@ -429,11 +428,8 @@ atomic_t redundant_softirqs_on;
 atomic_t redundant_softirqs_off;
 atomic_t nr_unused_locks;
 atomic_t nr_cyclic_checks;
-atomic_t nr_cyclic_check_recursions;
 atomic_t nr_find_usage_forwards_checks;
-atomic_t nr_find_usage_forwards_recursions;
 atomic_t nr_find_usage_backwards_checks;
-atomic_t nr_find_usage_backwards_recursions;
 #endif
 
 /*
@@ -861,14 +857,15 @@ struct circular_queue {
 };
 
 static struct circular_queue lock_cq;
-static unsigned long bfs_accessed[BITS_TO_LONGS(MAX_LOCKDEP_ENTRIES)];
 
 unsigned int max_bfs_queue_depth;
 
+static unsigned int lockdep_dependency_gen_id;
+
 static inline void __cq_init(struct circular_queue *cq)
 {
        cq->front = cq->rear = 0;
-       bitmap_zero(bfs_accessed, MAX_LOCKDEP_ENTRIES);
+       lockdep_dependency_gen_id++;
 }
 
 static inline int __cq_empty(struct circular_queue *cq)
@@ -914,7 +911,7 @@ static inline void mark_lock_accessed(struct lock_list *lock,
        nr = lock - list_entries;
        WARN_ON(nr >= nr_list_entries);
        lock->parent = parent;
-       set_bit(nr, bfs_accessed);
+       lock->class->dep_gen_id = lockdep_dependency_gen_id;
 }
 
 static inline unsigned long lock_accessed(struct lock_list *lock)
@@ -923,7 +920,7 @@ static inline unsigned long lock_accessed(struct lock_list *lock)
 
        nr = lock - list_entries;
        WARN_ON(nr >= nr_list_entries);
-       return test_bit(nr, bfs_accessed);
+       return lock->class->dep_gen_id == lockdep_dependency_gen_id;
 }
 
 static inline struct lock_list *get_lock_parent(struct lock_list *child)
@@ -3602,10 +3599,11 @@ void __init lockdep_info(void)
                sizeof(struct list_head) * CLASSHASH_SIZE +
                sizeof(struct lock_list) * MAX_LOCKDEP_ENTRIES +
                sizeof(struct lock_chain) * MAX_LOCKDEP_CHAINS +
-               sizeof(struct list_head) * CHAINHASH_SIZE) / 1024
+               sizeof(struct list_head) * CHAINHASH_SIZE
 #ifdef CONFIG_PROVE_LOCKING
-               + sizeof(struct circular_queue) + sizeof(bfs_accessed)
+               + sizeof(struct circular_queue)
 #endif
+               ) / 1024
                );
 
        printk(" per task-struct memory footprint: %lu bytes\n",