]> rtime.felk.cvut.cz Git - lisovros/linux_canprio.git/blobdiff - mm/slub.c
Merge branch 'slub/urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/penberg...
[lisovros/linux_canprio.git] / mm / slub.c
index c2d6e6951f334b40d8870f08526db2deee980133..578f68f3c51f76ed3c2ff21b5ff2545d2ab64c0d 100644 (file)
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -1360,6 +1360,7 @@ static struct page *get_any_partial(struct kmem_cache *s, gfp_t flags)
                        get_cycles() % 1024 > s->remote_node_defrag_ratio)
                return NULL;
 
+       get_mems_allowed();
        zonelist = node_zonelist(slab_node(current->mempolicy), flags);
        for_each_zone_zonelist(zone, z, zonelist, high_zoneidx) {
                struct kmem_cache_node *n;
@@ -1369,10 +1370,13 @@ static struct page *get_any_partial(struct kmem_cache *s, gfp_t flags)
                if (n && cpuset_zone_allowed_hardwall(zone, flags) &&
                                n->nr_partial > s->min_partial) {
                        page = get_partial_node(n);
-                       if (page)
+                       if (page) {
+                               put_mems_allowed();
                                return page;
+                       }
                }
        }
+       put_mems_allowed();
 #endif
        return NULL;
 }