diff options
Diffstat (limited to 'mm/slub.c')
-rw-r--r-- | mm/slub.c | 6 |
1 files changed, 5 insertions, 1 deletions
@@ -1360,6 +1360,7 @@ static struct page *get_any_partial(struct kmem_cache *s, gfp_t flags) | |||
1360 | get_cycles() % 1024 > s->remote_node_defrag_ratio) | 1360 | get_cycles() % 1024 > s->remote_node_defrag_ratio) |
1361 | return NULL; | 1361 | return NULL; |
1362 | 1362 | ||
1363 | get_mems_allowed(); | ||
1363 | zonelist = node_zonelist(slab_node(current->mempolicy), flags); | 1364 | zonelist = node_zonelist(slab_node(current->mempolicy), flags); |
1364 | for_each_zone_zonelist(zone, z, zonelist, high_zoneidx) { | 1365 | for_each_zone_zonelist(zone, z, zonelist, high_zoneidx) { |
1365 | struct kmem_cache_node *n; | 1366 | struct kmem_cache_node *n; |
@@ -1369,10 +1370,13 @@ static struct page *get_any_partial(struct kmem_cache *s, gfp_t flags) | |||
1369 | if (n && cpuset_zone_allowed_hardwall(zone, flags) && | 1370 | if (n && cpuset_zone_allowed_hardwall(zone, flags) && |
1370 | n->nr_partial > s->min_partial) { | 1371 | n->nr_partial > s->min_partial) { |
1371 | page = get_partial_node(n); | 1372 | page = get_partial_node(n); |
1372 | if (page) | 1373 | if (page) { |
1374 | put_mems_allowed(); | ||
1373 | return page; | 1375 | return page; |
1376 | } | ||
1374 | } | 1377 | } |
1375 | } | 1378 | } |
1379 | put_mems_allowed(); | ||
1376 | #endif | 1380 | #endif |
1377 | return NULL; | 1381 | return NULL; |
1378 | } | 1382 | } |