diff options
Diffstat (limited to 'lib/debugobjects.c')
-rw-r--r-- | lib/debugobjects.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/lib/debugobjects.c b/lib/debugobjects.c index 994be4805cec..14afeeb7d6ef 100644 --- a/lib/debugobjects.c +++ b/lib/debugobjects.c | |||
@@ -135,7 +135,6 @@ static void fill_pool(void) | |||
135 | if (!new) | 135 | if (!new) |
136 | return; | 136 | return; |
137 | 137 | ||
138 | kmemleak_ignore(new); | ||
139 | raw_spin_lock_irqsave(&pool_lock, flags); | 138 | raw_spin_lock_irqsave(&pool_lock, flags); |
140 | hlist_add_head(&new->node, &obj_pool); | 139 | hlist_add_head(&new->node, &obj_pool); |
141 | debug_objects_allocated++; | 140 | debug_objects_allocated++; |
@@ -360,9 +359,12 @@ static void debug_object_is_on_stack(void *addr, int onstack) | |||
360 | 359 | ||
361 | limit++; | 360 | limit++; |
362 | if (is_on_stack) | 361 | if (is_on_stack) |
363 | pr_warn("object is on stack, but not annotated\n"); | 362 | pr_warn("object %p is on stack %p, but NOT annotated.\n", addr, |
363 | task_stack_page(current)); | ||
364 | else | 364 | else |
365 | pr_warn("object is not on stack, but annotated\n"); | 365 | pr_warn("object %p is NOT on stack %p, but annotated.\n", addr, |
366 | task_stack_page(current)); | ||
367 | |||
366 | WARN_ON(1); | 368 | WARN_ON(1); |
367 | } | 369 | } |
368 | 370 | ||
@@ -1125,7 +1127,6 @@ static int __init debug_objects_replace_static_objects(void) | |||
1125 | obj = kmem_cache_zalloc(obj_cache, GFP_KERNEL); | 1127 | obj = kmem_cache_zalloc(obj_cache, GFP_KERNEL); |
1126 | if (!obj) | 1128 | if (!obj) |
1127 | goto free; | 1129 | goto free; |
1128 | kmemleak_ignore(obj); | ||
1129 | hlist_add_head(&obj->node, &objects); | 1130 | hlist_add_head(&obj->node, &objects); |
1130 | } | 1131 | } |
1131 | 1132 | ||
@@ -1181,12 +1182,12 @@ void __init debug_objects_mem_init(void) | |||
1181 | 1182 | ||
1182 | obj_cache = kmem_cache_create("debug_objects_cache", | 1183 | obj_cache = kmem_cache_create("debug_objects_cache", |
1183 | sizeof (struct debug_obj), 0, | 1184 | sizeof (struct debug_obj), 0, |
1184 | SLAB_DEBUG_OBJECTS, NULL); | 1185 | SLAB_DEBUG_OBJECTS | SLAB_NOLEAKTRACE, |
1186 | NULL); | ||
1185 | 1187 | ||
1186 | if (!obj_cache || debug_objects_replace_static_objects()) { | 1188 | if (!obj_cache || debug_objects_replace_static_objects()) { |
1187 | debug_objects_enabled = 0; | 1189 | debug_objects_enabled = 0; |
1188 | if (obj_cache) | 1190 | kmem_cache_destroy(obj_cache); |
1189 | kmem_cache_destroy(obj_cache); | ||
1190 | pr_warn("out of memory.\n"); | 1191 | pr_warn("out of memory.\n"); |
1191 | } else | 1192 | } else |
1192 | debug_objects_selftest(); | 1193 | debug_objects_selftest(); |