From: Pavel Tikhomirov Date: Wed, 31 Jul 2024 02:54:09 +0000 (+0800) Subject: kmemleak-enable-tracking-for-percpu-pointers-v2 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=57a6298b6fea906ad4a5d944387bfb572e94808e;p=users%2Fjedix%2Flinux-maple.git kmemleak-enable-tracking-for-percpu-pointers-v2 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 Reviewed-by: Catalin Marinas Cc: Wei Yongjun Cc: Chen Jun Signed-off-by: Andrew Morton --- diff --git a/mm/kmemleak.c b/mm/kmemleak.c index 4babfead5078f..6b498c6d9c34a 100644 --- a/mm/kmemleak.c +++ b/mm/kmemleak.c @@ -1362,28 +1362,7 @@ static void update_refs(struct kmemleak_object *object) } } -/* - * 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; @@ -1441,6 +1420,27 @@ static void scan_pointer(struct kmemleak_object *scanned, } } +/* + * 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, void *_end, 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); }