diff options
Diffstat (limited to 'mm/slab.c')
-rw-r--r-- | mm/slab.c | 7 |
1 files changed, 5 insertions, 2 deletions
@@ -1146,7 +1146,7 @@ static inline int cache_free_alien(struct kmem_cache *cachep, void *objp) | |||
1146 | * Make sure we are not freeing a object from another node to the array | 1146 | * Make sure we are not freeing a object from another node to the array |
1147 | * cache on this cpu. | 1147 | * cache on this cpu. |
1148 | */ | 1148 | */ |
1149 | if (likely(slabp->nodeid == node) || unlikely(!use_alien_caches)) | 1149 | if (likely(slabp->nodeid == node)) |
1150 | return 0; | 1150 | return 0; |
1151 | 1151 | ||
1152 | l3 = cachep->nodelists[node]; | 1152 | l3 = cachep->nodelists[node]; |
@@ -1394,6 +1394,9 @@ void __init kmem_cache_init(void) | |||
1394 | int order; | 1394 | int order; |
1395 | int node; | 1395 | int node; |
1396 | 1396 | ||
1397 | if (num_possible_nodes() == 1) | ||
1398 | use_alien_caches = 0; | ||
1399 | |||
1397 | for (i = 0; i < NUM_INIT_LISTS; i++) { | 1400 | for (i = 0; i < NUM_INIT_LISTS; i++) { |
1398 | kmem_list3_init(&initkmem_list3[i]); | 1401 | kmem_list3_init(&initkmem_list3[i]); |
1399 | if (i < MAX_NUMNODES) | 1402 | if (i < MAX_NUMNODES) |
@@ -3563,7 +3566,7 @@ static inline void __cache_free(struct kmem_cache *cachep, void *objp) | |||
3563 | check_irq_off(); | 3566 | check_irq_off(); |
3564 | objp = cache_free_debugcheck(cachep, objp, __builtin_return_address(0)); | 3567 | objp = cache_free_debugcheck(cachep, objp, __builtin_return_address(0)); |
3565 | 3568 | ||
3566 | if (cache_free_alien(cachep, objp)) | 3569 | if (use_alien_caches && cache_free_alien(cachep, objp)) |
3567 | return; | 3570 | return; |
3568 | 3571 | ||
3569 | if (likely(ac->avail < ac->limit)) { | 3572 | if (likely(ac->avail < ac->limit)) { |