diff options
Diffstat (limited to 'mm/slab.c')
| -rw-r--r-- | mm/slab.c | 5 |
1 files changed, 4 insertions, 1 deletions
| @@ -2419,6 +2419,7 @@ retry: | |||
| 2419 | next = slab_bufctl(slabp)[slabp->free]; | 2419 | next = slab_bufctl(slabp)[slabp->free]; |
| 2420 | #if DEBUG | 2420 | #if DEBUG |
| 2421 | slab_bufctl(slabp)[slabp->free] = BUFCTL_FREE; | 2421 | slab_bufctl(slabp)[slabp->free] = BUFCTL_FREE; |
| 2422 | WARN_ON(numa_node_id() != slabp->nodeid); | ||
| 2422 | #endif | 2423 | #endif |
| 2423 | slabp->free = next; | 2424 | slabp->free = next; |
| 2424 | } | 2425 | } |
| @@ -2633,8 +2634,10 @@ static void free_block(kmem_cache_t *cachep, void **objpp, int nr_objects, int n | |||
| 2633 | check_spinlock_acquired_node(cachep, node); | 2634 | check_spinlock_acquired_node(cachep, node); |
| 2634 | check_slabp(cachep, slabp); | 2635 | check_slabp(cachep, slabp); |
| 2635 | 2636 | ||
| 2636 | |||
| 2637 | #if DEBUG | 2637 | #if DEBUG |
| 2638 | /* Verify that the slab belongs to the intended node */ | ||
| 2639 | WARN_ON(slabp->nodeid != node); | ||
| 2640 | |||
| 2638 | if (slab_bufctl(slabp)[objnr] != BUFCTL_FREE) { | 2641 | if (slab_bufctl(slabp)[objnr] != BUFCTL_FREE) { |
| 2639 | printk(KERN_ERR "slab: double free detected in cache " | 2642 | printk(KERN_ERR "slab: double free detected in cache " |
| 2640 | "'%s', objp %p\n", cachep->name, objp); | 2643 | "'%s', objp %p\n", cachep->name, objp); |
