Merge tag 'locking-urgent-2021-05-09' of git://git.kernel.org/pub/scm/linux/kernel...
[linux-2.6-microblaze.git] / kernel / locking / lockdep.c
index f160f1c..48d736a 100644 (file)
@@ -54,6 +54,7 @@
 #include <linux/nmi.h>
 #include <linux/rcupdate.h>
 #include <linux/kprobes.h>
+#include <linux/lockdep.h>
 
 #include <asm/sections.h>
 
@@ -1393,7 +1394,7 @@ static int add_lock_to_list(struct lock_class *this,
 /*
  * For good efficiency of modular, we use power of 2
  */
-#define MAX_CIRCULAR_QUEUE_SIZE                4096UL
+#define MAX_CIRCULAR_QUEUE_SIZE                (1UL << CONFIG_LOCKDEP_CIRCULAR_QUEUE_BITS)
 #define CQ_MASK                                (MAX_CIRCULAR_QUEUE_SIZE-1)
 
 /*
@@ -1747,7 +1748,7 @@ static enum bfs_result __bfs(struct lock_list *source_entry,
 
                /*
                 * Step 4: if not match, expand the path by adding the
-                *         forward or backwards dependencis in the search
+                *         forward or backwards dependencies in the search
                 *
                 */
                first = true;
@@ -1916,7 +1917,7 @@ print_circular_bug_header(struct lock_list *entry, unsigned int depth,
  * -> B is -(ER)-> or -(EN)->, then we don't need to add A -> B into the
  * dependency graph, as any strong path ..-> A -> B ->.. we can get with
  * having dependency A -> B, we could already get a equivalent path ..-> A ->
- * .. -> B -> .. with A -> .. -> B. Therefore A -> B is reduntant.
+ * .. -> B -> .. with A -> .. -> B. Therefore A -> B is redundant.
  *
  * We need to make sure both the start and the end of A -> .. -> B is not
  * weaker than A -> B. For the start part, please see the comment in
@@ -5253,13 +5254,13 @@ int __lock_is_held(const struct lockdep_map *lock, int read)
 
                if (match_held_lock(hlock, lock)) {
                        if (read == -1 || hlock->read == read)
-                               return 1;
+                               return LOCK_STATE_HELD;
 
-                       return 0;
+                       return LOCK_STATE_NOT_HELD;
                }
        }
 
-       return 0;
+       return LOCK_STATE_NOT_HELD;
 }
 
 static struct pin_cookie __lock_pin_lock(struct lockdep_map *lock)
@@ -5538,10 +5539,14 @@ EXPORT_SYMBOL_GPL(lock_release);
 noinstr int lock_is_held_type(const struct lockdep_map *lock, int read)
 {
        unsigned long flags;
-       int ret = 0;
+       int ret = LOCK_STATE_NOT_HELD;
 
+       /*
+        * Avoid false negative lockdep_assert_held() and
+        * lockdep_assert_not_held().
+        */
        if (unlikely(!lockdep_enabled()))
-               return 1; /* avoid false negative lockdep_assert_held() */
+               return LOCK_STATE_UNKNOWN;
 
        raw_local_irq_save(flags);
        check_flags(flags);