aboutsummaryrefslogtreecommitdiffstats
path: root/mm/kmemleak.c
diff options
context:
space:
mode:
Diffstat (limited to 'mm/kmemleak.c')
-rw-r--r--mm/kmemleak.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/mm/kmemleak.c b/mm/kmemleak.c
index 1d7645b0a97c..c494fee7a2b5 100644
--- a/mm/kmemleak.c
+++ b/mm/kmemleak.c
@@ -97,6 +97,7 @@
97#include <asm/processor.h> 97#include <asm/processor.h>
98#include <asm/atomic.h> 98#include <asm/atomic.h>
99 99
100#include <linux/kmemcheck.h>
100#include <linux/kmemleak.h> 101#include <linux/kmemleak.h>
101 102
102/* 103/*
@@ -967,15 +968,22 @@ static void scan_block(void *_start, void *_end,
967 unsigned long *end = _end - (BYTES_PER_POINTER - 1); 968 unsigned long *end = _end - (BYTES_PER_POINTER - 1);
968 969
969 for (ptr = start; ptr < end; ptr++) { 970 for (ptr = start; ptr < end; ptr++) {
970 unsigned long flags;
971 unsigned long pointer = *ptr;
972 struct kmemleak_object *object; 971 struct kmemleak_object *object;
972 unsigned long flags;
973 unsigned long pointer;
973 974
974 if (allow_resched) 975 if (allow_resched)
975 cond_resched(); 976 cond_resched();
976 if (scan_should_stop()) 977 if (scan_should_stop())
977 break; 978 break;
978 979
980 /* don't scan uninitialized memory */
981 if (!kmemcheck_is_obj_initialized((unsigned long)ptr,
982 BYTES_PER_POINTER))
983 continue;
984
985 pointer = *ptr;
986
979 object = find_and_get_object(pointer, 1); 987 object = find_and_get_object(pointer, 1);
980 if (!object) 988 if (!object)
981 continue; 989 continue;