diff options
Diffstat (limited to 'mm/slab.c')
-rw-r--r-- | mm/slab.c | 4 |
1 files changed, 3 insertions, 1 deletions
@@ -3015,7 +3015,7 @@ retry: | |||
3015 | for_each_zone_zonelist(zone, z, zonelist, high_zoneidx) { | 3015 | for_each_zone_zonelist(zone, z, zonelist, high_zoneidx) { |
3016 | nid = zone_to_nid(zone); | 3016 | nid = zone_to_nid(zone); |
3017 | 3017 | ||
3018 | if (cpuset_zone_allowed(zone, flags | __GFP_HARDWALL) && | 3018 | if (cpuset_zone_allowed(zone, flags) && |
3019 | get_node(cache, nid) && | 3019 | get_node(cache, nid) && |
3020 | get_node(cache, nid)->free_objects) { | 3020 | get_node(cache, nid)->free_objects) { |
3021 | obj = ____cache_alloc_node(cache, | 3021 | obj = ____cache_alloc_node(cache, |
@@ -3182,6 +3182,7 @@ slab_alloc_node(struct kmem_cache *cachep, gfp_t flags, int nodeid, | |||
3182 | memset(ptr, 0, cachep->object_size); | 3182 | memset(ptr, 0, cachep->object_size); |
3183 | } | 3183 | } |
3184 | 3184 | ||
3185 | memcg_kmem_put_cache(cachep); | ||
3185 | return ptr; | 3186 | return ptr; |
3186 | } | 3187 | } |
3187 | 3188 | ||
@@ -3247,6 +3248,7 @@ slab_alloc(struct kmem_cache *cachep, gfp_t flags, unsigned long caller) | |||
3247 | memset(objp, 0, cachep->object_size); | 3248 | memset(objp, 0, cachep->object_size); |
3248 | } | 3249 | } |
3249 | 3250 | ||
3251 | memcg_kmem_put_cache(cachep); | ||
3250 | return objp; | 3252 | return objp; |
3251 | } | 3253 | } |
3252 | 3254 | ||