diff options
Diffstat (limited to 'mm/slab.c')
-rw-r--r-- | mm/slab.c | 10 |
1 files changed, 8 insertions, 2 deletions
@@ -110,6 +110,7 @@ | |||
110 | #include <linux/fault-inject.h> | 110 | #include <linux/fault-inject.h> |
111 | #include <linux/rtmutex.h> | 111 | #include <linux/rtmutex.h> |
112 | #include <linux/reciprocal_div.h> | 112 | #include <linux/reciprocal_div.h> |
113 | #include <linux/debugobjects.h> | ||
113 | 114 | ||
114 | #include <asm/cacheflush.h> | 115 | #include <asm/cacheflush.h> |
115 | #include <asm/tlbflush.h> | 116 | #include <asm/tlbflush.h> |
@@ -174,12 +175,14 @@ | |||
174 | SLAB_CACHE_DMA | \ | 175 | SLAB_CACHE_DMA | \ |
175 | SLAB_STORE_USER | \ | 176 | SLAB_STORE_USER | \ |
176 | SLAB_RECLAIM_ACCOUNT | SLAB_PANIC | \ | 177 | SLAB_RECLAIM_ACCOUNT | SLAB_PANIC | \ |
177 | SLAB_DESTROY_BY_RCU | SLAB_MEM_SPREAD) | 178 | SLAB_DESTROY_BY_RCU | SLAB_MEM_SPREAD | \ |
179 | SLAB_DEBUG_OBJECTS) | ||
178 | #else | 180 | #else |
179 | # define CREATE_MASK (SLAB_HWCACHE_ALIGN | \ | 181 | # define CREATE_MASK (SLAB_HWCACHE_ALIGN | \ |
180 | SLAB_CACHE_DMA | \ | 182 | SLAB_CACHE_DMA | \ |
181 | SLAB_RECLAIM_ACCOUNT | SLAB_PANIC | \ | 183 | SLAB_RECLAIM_ACCOUNT | SLAB_PANIC | \ |
182 | SLAB_DESTROY_BY_RCU | SLAB_MEM_SPREAD) | 184 | SLAB_DESTROY_BY_RCU | SLAB_MEM_SPREAD | \ |
185 | SLAB_DEBUG_OBJECTS) | ||
183 | #endif | 186 | #endif |
184 | 187 | ||
185 | /* | 188 | /* |
@@ -3760,6 +3763,8 @@ void kmem_cache_free(struct kmem_cache *cachep, void *objp) | |||
3760 | 3763 | ||
3761 | local_irq_save(flags); | 3764 | local_irq_save(flags); |
3762 | debug_check_no_locks_freed(objp, obj_size(cachep)); | 3765 | debug_check_no_locks_freed(objp, obj_size(cachep)); |
3766 | if (!(cachep->flags & SLAB_DEBUG_OBJECTS)) | ||
3767 | debug_check_no_obj_freed(objp, obj_size(cachep)); | ||
3763 | __cache_free(cachep, objp); | 3768 | __cache_free(cachep, objp); |
3764 | local_irq_restore(flags); | 3769 | local_irq_restore(flags); |
3765 | } | 3770 | } |
@@ -3785,6 +3790,7 @@ void kfree(const void *objp) | |||
3785 | kfree_debugcheck(objp); | 3790 | kfree_debugcheck(objp); |
3786 | c = virt_to_cache(objp); | 3791 | c = virt_to_cache(objp); |
3787 | debug_check_no_locks_freed(objp, obj_size(c)); | 3792 | debug_check_no_locks_freed(objp, obj_size(c)); |
3793 | debug_check_no_obj_freed(objp, obj_size(c)); | ||
3788 | __cache_free(c, (void *)objp); | 3794 | __cache_free(c, (void *)objp); |
3789 | local_irq_restore(flags); | 3795 | local_irq_restore(flags); |
3790 | } | 3796 | } |