[PATCH] slab: add additional debugging to detect slabs from the wrong node
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 <clameter@sgi.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
c340010e4b
commit
09ad4bbc3a
1 changed files with 4 additions and 1 deletions
|
@ -2419,6 +2419,7 @@ static void *cache_alloc_refill(kmem_cache_t *cachep, gfp_t flags)
|
|||
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 *cachep, void **objpp, int nr_objects, int n
|
|||
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);
|
||||
|
|
Loading…
Reference in a new issue