]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
lib: split codetag_lock_module_list()
authorBart Van Assche <bvanassche@acm.org>
Tue, 24 Mar 2026 21:42:25 +0000 (14:42 -0700)
committerAndrew Morton <akpm@linux-foundation.org>
Sun, 21 Jun 2026 18:31:28 +0000 (11:31 -0700)
Letting a function argument indicate whether a lock or unlock operation
should be performed is incompatible with compile-time analysis of locking
operations by sparse and Clang.  Hence, split codetag_lock_module_list()
into two functions: a function that locks cttype->mod_lock and another
function that unlocks cttype->mod_lock.  No functionality has been
changed.  See also commit 916cc5167cc6 ("lib: code tagging framework").

Link: https://lore.kernel.org/20260324214226.3684605-1-bvanassche@acm.org
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Acked-by: Suren Baghdasaryan <surenb@google.com>
Cc: Kent Overstreet <kent.overstreet@linux.dev>
Cc: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
include/linux/codetag.h
lib/alloc_tag.c
lib/codetag.c

index 8ea2a5f7c98a5851f3a304c8fe389e8fc7cf890f..ddae7484ca456cd735b3f5467d08bcf0f87aef6b 100644 (file)
@@ -74,8 +74,9 @@ struct codetag_iterator {
        .flags          = 0,                            \
 }
 
-void codetag_lock_module_list(struct codetag_type *cttype, bool lock);
+void codetag_lock_module_list(struct codetag_type *cttype);
 bool codetag_trylock_module_list(struct codetag_type *cttype);
+void codetag_unlock_module_list(struct codetag_type *cttype);
 struct codetag_iterator codetag_get_ct_iter(struct codetag_type *cttype);
 struct codetag *codetag_next_ct(struct codetag_iterator *iter);
 
index 551cc14bb1fd062815366012126139295c87817c..d9be1cf5187d97e01ffd6c4d0e448d5ccaed1d22 100644 (file)
@@ -55,7 +55,7 @@ static void *allocinfo_start(struct seq_file *m, loff_t *pos)
        loff_t node = *pos;
 
        priv = (struct allocinfo_private *)m->private;
-       codetag_lock_module_list(alloc_tag_cttype, true);
+       codetag_lock_module_list(alloc_tag_cttype);
        if (node == 0) {
                priv->print_header = true;
                priv->iter = codetag_get_ct_iter(alloc_tag_cttype);
@@ -82,7 +82,7 @@ static void *allocinfo_next(struct seq_file *m, void *arg, loff_t *pos)
 
 static void allocinfo_stop(struct seq_file *m, void *arg)
 {
-       codetag_lock_module_list(alloc_tag_cttype, false);
+       codetag_unlock_module_list(alloc_tag_cttype);
 }
 
 static void print_allocinfo_header(struct seq_buf *buf)
@@ -141,7 +141,7 @@ size_t alloc_tag_top_users(struct codetag_bytes *tags, size_t count, bool can_sl
                return 0;
 
        if (can_sleep)
-               codetag_lock_module_list(alloc_tag_cttype, true);
+               codetag_lock_module_list(alloc_tag_cttype);
        else if (!codetag_trylock_module_list(alloc_tag_cttype))
                return 0;
 
@@ -166,7 +166,7 @@ size_t alloc_tag_top_users(struct codetag_bytes *tags, size_t count, bool can_sl
                }
        }
 
-       codetag_lock_module_list(alloc_tag_cttype, false);
+       codetag_unlock_module_list(alloc_tag_cttype);
 
        return nr;
 }
index 304667897ad4a1086e2b90c8ca52868703a02eed..4001a7ea667542aa3792b4b025ec403faf687cff 100644 (file)
@@ -35,12 +35,9 @@ struct codetag_module {
 static DEFINE_MUTEX(codetag_lock);
 static LIST_HEAD(codetag_types);
 
-void codetag_lock_module_list(struct codetag_type *cttype, bool lock)
+void codetag_lock_module_list(struct codetag_type *cttype)
 {
-       if (lock)
-               down_read(&cttype->mod_lock);
-       else
-               up_read(&cttype->mod_lock);
+       down_read(&cttype->mod_lock);
 }
 
 bool codetag_trylock_module_list(struct codetag_type *cttype)
@@ -48,6 +45,11 @@ bool codetag_trylock_module_list(struct codetag_type *cttype)
        return down_read_trylock(&cttype->mod_lock) != 0;
 }
 
+void codetag_unlock_module_list(struct codetag_type *cttype)
+{
+       up_read(&cttype->mod_lock);
+}
+
 struct codetag_iterator codetag_get_ct_iter(struct codetag_type *cttype)
 {
        struct codetag_iterator iter = {