blob: cd6bb6f0972ce7c1535b774f36cb0000db4b1f13 [file] [log] [blame]
From: Pavel Tikhomirov <ptikhomirov@virtuozzo.com>
Subject: kmemleak-enable-tracking-for-percpu-pointers-v2
Date: Wed, 31 Jul 2024 10:54:09 +0800
rename confusing scan_pointer to pointer_update_refs and move it just
after update_refs
Link: https://lkml.kernel.org/r/20240731025526.157529-2-ptikhomirov@virtuozzo.com
Signed-off-by: Pavel Tikhomirov <ptikhomirov@virtuozzo.com>
Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
Cc: Wei Yongjun <weiyongjun1@huawei.com>
Cc: Chen Jun <chenjun102@huawei.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
mm/kmemleak.c | 48 ++++++++++++++++++++++++------------------------
1 file changed, 24 insertions(+), 24 deletions(-)
--- a/mm/kmemleak.c~kmemleak-enable-tracking-for-percpu-pointers-v2
+++ a/mm/kmemleak.c
@@ -1362,28 +1362,7 @@ static void update_refs(struct kmemleak_
}
}
-/*
- * Memory scanning is a long process and it needs to be interruptible. This
- * function checks whether such interrupt condition occurred.
- */
-static int scan_should_stop(void)
-{
- if (!kmemleak_enabled)
- return 1;
-
- /*
- * This function may be called from either process or kthread context,
- * hence the need to check for both stop conditions.
- */
- if (current->mm)
- return signal_pending(current);
- else
- return kthread_should_stop();
-
- return 0;
-}
-
-static void scan_pointer(struct kmemleak_object *scanned,
+static void pointer_update_refs(struct kmemleak_object *scanned,
unsigned long pointer, unsigned int objflags)
{
struct kmemleak_object *object;
@@ -1442,6 +1421,27 @@ static void scan_pointer(struct kmemleak
}
/*
+ * Memory scanning is a long process and it needs to be interruptible. This
+ * function checks whether such interrupt condition occurred.
+ */
+static int scan_should_stop(void)
+{
+ if (!kmemleak_enabled)
+ return 1;
+
+ /*
+ * This function may be called from either process or kthread context,
+ * hence the need to check for both stop conditions.
+ */
+ if (current->mm)
+ return signal_pending(current);
+ else
+ return kthread_should_stop();
+
+ return 0;
+}
+
+/*
* Scan a memory block (exclusive range) for valid pointers and add those
* found to the gray list.
*/
@@ -1464,8 +1464,8 @@ static void scan_block(void *_start, voi
pointer = *(unsigned long *)kasan_reset_tag((void *)ptr);
kasan_enable_current();
- scan_pointer(scanned, pointer, 0);
- scan_pointer(scanned, pointer, OBJECT_PERCPU);
+ pointer_update_refs(scanned, pointer, 0);
+ pointer_update_refs(scanned, pointer, OBJECT_PERCPU);
}
raw_spin_unlock_irqrestore(&kmemleak_lock, flags);
}
_