Skip to content

Commit

Permalink
slab: Make allocations with GFP_ZERO slightly more efficient
Browse files Browse the repository at this point in the history
Use the likely mechanism already around valid
pointer tests to better choose when to memset
to 0 allocations with __GFP_ZERO

Acked-by: Christoph Lameter <cl@linux.com>
Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: Pekka Enberg <penberg@kernel.org>
  • Loading branch information
Joe Perches authored and Pekka Enberg committed Feb 8, 2014
1 parent 8fc9cf4 commit 5087c82
Showing 1 changed file with 8 additions and 8 deletions.
16 changes: 8 additions & 8 deletions mm/slab.c
Original file line number Diff line number Diff line change
Expand Up @@ -3278,11 +3278,11 @@ slab_alloc_node(struct kmem_cache *cachep, gfp_t flags, int nodeid,
kmemleak_alloc_recursive(ptr, cachep->object_size, 1, cachep->flags,
flags);

if (likely(ptr))
if (likely(ptr)) {
kmemcheck_slab_alloc(cachep, flags, ptr, cachep->object_size);

if (unlikely((flags & __GFP_ZERO) && ptr))
memset(ptr, 0, cachep->object_size);
if (unlikely(flags & __GFP_ZERO))
memset(ptr, 0, cachep->object_size);
}

return ptr;
}
Expand Down Expand Up @@ -3343,11 +3343,11 @@ slab_alloc(struct kmem_cache *cachep, gfp_t flags, unsigned long caller)
flags);
prefetchw(objp);

if (likely(objp))
if (likely(objp)) {
kmemcheck_slab_alloc(cachep, flags, objp, cachep->object_size);

if (unlikely((flags & __GFP_ZERO) && objp))
memset(objp, 0, cachep->object_size);
if (unlikely(flags & __GFP_ZERO))
memset(objp, 0, cachep->object_size);
}

return objp;
}
Expand Down

0 comments on commit 5087c82

Please sign in to comment.