Skip to content
  • Jesper Dangaard Brouer's avatar
    slub: clean up code for kmem cgroup support to kmem_cache_free_bulk · 376bf125
    Jesper Dangaard Brouer authored
    This change is primarily an attempt to make it easier to realize the
    optimizations the compiler performs in-case CONFIG_MEMCG_KMEM is not
    enabled.
    
    Performance wise, even when CONFIG_MEMCG_KMEM is compiled in, the
    overhead is zero.  This is because, as long as no process have enabled
    kmem cgroups accounting, the assignment is replaced by asm-NOP
    operations.  This is possible because memcg_kmem_enabled() uses a
    static_key_false() construct.
    
    It also helps readability as it avoid accessing the p[] array like:
    p[size - 1] which "expose" that the array is processed backwards inside
    helper function build_detached_freelist().
    
    Lastly this also makes the code more robust, in error case like passing
    NULL pointers in the array.  Which were previously handled before commit
    03374518 ("slub: add missing kmem cgroup support to
    kmem_cache_free_bulk").
    
    Fixes: 03374518
    
     ("slub: add missing kmem cgroup support to kmem_cache_free_bulk")
    Signed-off-by: default avatarJesper Dangaard Brouer <brouer@redhat.com>
    Cc: Christoph Lameter <cl@linux.com>
    Cc: Pekka Enberg <penberg@kernel.org>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
    Cc: Vladimir Davydov <vdavydov@virtuozzo.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    376bf125