diff options
Diffstat (limited to 'mm/slab.c')
-rw-r--r-- | mm/slab.c | 13 |
1 files changed, 8 insertions, 5 deletions
@@ -386,7 +386,7 @@ struct kmem_cache_s { | |||
386 | unsigned int gfporder; | 386 | unsigned int gfporder; |
387 | 387 | ||
388 | /* force GFP flags, e.g. GFP_DMA */ | 388 | /* force GFP flags, e.g. GFP_DMA */ |
389 | unsigned int gfpflags; | 389 | gfp_t gfpflags; |
390 | 390 | ||
391 | size_t colour; /* cache colouring range */ | 391 | size_t colour; /* cache colouring range */ |
392 | unsigned int colour_off; /* colour offset */ | 392 | unsigned int colour_off; /* colour offset */ |
@@ -2117,7 +2117,7 @@ static void cache_init_objs(kmem_cache_t *cachep, | |||
2117 | slabp->free = 0; | 2117 | slabp->free = 0; |
2118 | } | 2118 | } |
2119 | 2119 | ||
2120 | static void kmem_flagcheck(kmem_cache_t *cachep, unsigned int flags) | 2120 | static void kmem_flagcheck(kmem_cache_t *cachep, gfp_t flags) |
2121 | { | 2121 | { |
2122 | if (flags & SLAB_DMA) { | 2122 | if (flags & SLAB_DMA) { |
2123 | if (!(cachep->gfpflags & GFP_DMA)) | 2123 | if (!(cachep->gfpflags & GFP_DMA)) |
@@ -2152,7 +2152,7 @@ static int cache_grow(kmem_cache_t *cachep, gfp_t flags, int nodeid) | |||
2152 | struct slab *slabp; | 2152 | struct slab *slabp; |
2153 | void *objp; | 2153 | void *objp; |
2154 | size_t offset; | 2154 | size_t offset; |
2155 | unsigned int local_flags; | 2155 | gfp_t local_flags; |
2156 | unsigned long ctor_flags; | 2156 | unsigned long ctor_flags; |
2157 | struct kmem_list3 *l3; | 2157 | struct kmem_list3 *l3; |
2158 | 2158 | ||
@@ -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 | } |
@@ -2546,7 +2547,7 @@ static inline void *__cache_alloc(kmem_cache_t *cachep, gfp_t flags) | |||
2546 | /* | 2547 | /* |
2547 | * A interface to enable slab creation on nodeid | 2548 | * A interface to enable slab creation on nodeid |
2548 | */ | 2549 | */ |
2549 | static void *__cache_alloc_node(kmem_cache_t *cachep, int flags, int nodeid) | 2550 | static void *__cache_alloc_node(kmem_cache_t *cachep, gfp_t flags, int nodeid) |
2550 | { | 2551 | { |
2551 | struct list_head *entry; | 2552 | struct list_head *entry; |
2552 | struct slab *slabp; | 2553 | struct slab *slabp; |
@@ -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); |