Index: linux-2.6.21-rc1/mm/slub.c =================================================================== --- linux-2.6.21-rc1.orig/mm/slub.c 2007-02-27 13:31:47.000000000 -0800 +++ linux-2.6.21-rc1/mm/slub.c 2007-02-27 13:39:10.000000000 -0800 @@ -119,6 +119,14 @@ struct kmem_cache_node *get_node(struct /* * Object debugging */ +#define USER_TRACK_DEPTH 3 + +struct object_meta { + void *free_pointer; + void *alloc[USER_TRACK_DEPTH]; + void *free[USER_TRACK_DEPTH]; +} + static void print_section(char *text, u8 *addr, unsigned int length) { int i; @@ -1175,8 +1183,8 @@ int kmem_cache_open(struct kmem_cache *s strlen(slub_debug_slabs)) == 0)) flags |= slub_debug; - if ((flags & SLAB_POISON) && ((flags & SLAB_DESTROY_BY_RCU) || - s->ctor || s->dtor)) { + if ((flags & SLAB_POISON) && !(flags & SLAB_DESTROY_BY_RCU) && + !s->ctor && !s->dtor) { if (!(slub_debug & SLAB_POISON)) printk(KERN_WARNING "SLUB %s: Clearing SLAB_POISON " "because de/constructor exists.\n",