]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
mm: kmemleak: add __find_and_remove_object()
authorLiu Shixin <liushixin2@huawei.com>
Wed, 18 Oct 2023 10:29:51 +0000 (18:29 +0800)
committerAndrew Morton <akpm@linux-foundation.org>
Wed, 25 Oct 2023 23:47:13 +0000 (16:47 -0700)
Add new __find_and_remove_object() without kmemleak_lock protect, it is in
preparation for the next patch.

Link: https://lkml.kernel.org/r/20231018102952.3339837-7-liushixin2@huawei.com
Signed-off-by: Liu Shixin <liushixin2@huawei.com>
Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Cc: Kefeng Wang <wangkefeng.wang@huawei.com>
Cc: Patrick Wang <patrick.wang.shcn@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
mm/kmemleak.c

index 82322b029f1c9744dfe3049650b26b06d7eafe28..f63c220eb49eba904453a923da554d31edf0b58d 100644 (file)
@@ -583,6 +583,19 @@ static void __remove_object(struct kmemleak_object *object)
        object->del_state |= DELSTATE_REMOVED;
 }
 
+static struct kmemleak_object *__find_and_remove_object(unsigned long ptr,
+                                                       int alias,
+                                                       bool is_phys)
+{
+       struct kmemleak_object *object;
+
+       object = __lookup_object(ptr, alias, is_phys);
+       if (object)
+               __remove_object(object);
+
+       return object;
+}
+
 /*
  * Look up an object in the object search tree and remove it from both
  * object_tree_root (or object_phys_tree_root) and object_list. The
@@ -596,9 +609,7 @@ static struct kmemleak_object *find_and_remove_object(unsigned long ptr, int ali
        struct kmemleak_object *object;
 
        raw_spin_lock_irqsave(&kmemleak_lock, flags);
-       object = __lookup_object(ptr, alias, is_phys);
-       if (object)
-               __remove_object(object);
+       object = __find_and_remove_object(ptr, alias, is_phys);
        raw_spin_unlock_irqrestore(&kmemleak_lock, flags);
 
        return object;