From: Christoph Lameter This patch adds some stack dumps if the slab logic is processing slab blocks from the wrong node. This is necessary in order to detect situations as encountered by Petr. Signed-off-by: Christoph Lameter Signed-off-by: Andrew Morton --- mm/slab.c | 5 ++++- 1 files changed, 4 insertions(+), 1 deletion(-) diff -puN mm/slab.c~slab-add-additional-debugging-to-detect-slabs-from-the-wrong-node mm/slab.c --- devel/mm/slab.c~slab-add-additional-debugging-to-detect-slabs-from-the-wrong-node 2005-10-11 00:34:32.000000000 -0700 +++ devel-akpm/mm/slab.c 2005-10-11 00:34:32.000000000 -0700 @@ -2419,6 +2419,7 @@ retry: next = slab_bufctl(slabp)[slabp->free]; #if DEBUG slab_bufctl(slabp)[slabp->free] = BUFCTL_FREE; + WARN_ON(numa_node_id() != slabp->nodeid); #endif slabp->free = next; } @@ -2633,8 +2634,10 @@ static void free_block(kmem_cache_t *cac check_spinlock_acquired_node(cachep, node); check_slabp(cachep, slabp); - #if DEBUG + /* Verify that the slab belongs to the intended node */ + WARN_ON(slabp->nodeid != node); + if (slab_bufctl(slabp)[objnr] != BUFCTL_FREE) { printk(KERN_ERR "slab: double free detected in cache " "'%s', objp %p\n", cachep->name, objp); _