aboutsummaryrefslogtreecommitdiffstats
path: root/mm/slub.c
diff options
context:
space:
mode:
Diffstat (limited to 'mm/slub.c')
-rw-r--r--mm/slub.c27
1 files changed, 4 insertions, 23 deletions
diff --git a/mm/slub.c b/mm/slub.c
index e01d399894c4..d7d0d866b6b2 100644
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -997,30 +997,11 @@ static unsigned long kmem_cache_flags(unsigned long objsize,
997 void (*ctor)(struct kmem_cache *, void *)) 997 void (*ctor)(struct kmem_cache *, void *))
998{ 998{
999 /* 999 /*
1000 * The page->offset field is only 16 bit wide. This is an offset 1000 * Enable debugging if selected on the kernel commandline.
1001 * in units of words from the beginning of an object. If the slab
1002 * size is bigger then we cannot move the free pointer behind the
1003 * object anymore.
1004 *
1005 * On 32 bit platforms the limit is 256k. On 64bit platforms
1006 * the limit is 512k.
1007 *
1008 * Debugging or ctor may create a need to move the free
1009 * pointer. Fail if this happens.
1010 */ 1001 */
1011 if (objsize >= 65535 * sizeof(void *)) { 1002 if (slub_debug && (!slub_debug_slabs ||
1012 BUG_ON(flags & (SLAB_RED_ZONE | SLAB_POISON | 1003 strncmp(slub_debug_slabs, name, strlen(slub_debug_slabs)) == 0))
1013 SLAB_STORE_USER | SLAB_DESTROY_BY_RCU)); 1004 flags |= slub_debug;
1014 BUG_ON(ctor);
1015 } else {
1016 /*
1017 * Enable debugging if selected on the kernel commandline.
1018 */
1019 if (slub_debug && (!slub_debug_slabs ||
1020 strncmp(slub_debug_slabs, name,
1021 strlen(slub_debug_slabs)) == 0))
1022 flags |= slub_debug;
1023 }
1024 1005
1025 return flags; 1006 return flags;
1026} 1007}