Skip to content
  • Arnd Bergmann's avatar
    slub: avoid false-postive warning · 84582c8a
    Arnd Bergmann authored
    The slub allocator gives us some incorrect warnings when
    CONFIG_PROFILE_ANNOTATED_BRANCHES is set, as the unlikely() macro
    prevents it from seeing that the return code matches what it was before:
    
      mm/slub.c: In function `kmem_cache_free_bulk':
      mm/slub.c:262:23: error: `df.s' may be used uninitialized in this function [-Werror=maybe-uninitialized]
      mm/slub.c:2943:3: error: `df.cnt' may be used uninitialized in this function [-Werror=maybe-uninitialized]
      mm/slub.c:2933:4470: error: `df.freelist' may be used uninitialized in this function [-Werror=maybe-uninitialized]
      mm/slub.c:2943:3: error: `df.tail' may be used uninitialized in this function [-Werror=maybe-uninitialized]
    
    I have not been able to come up with a perfect way for dealing with
    this, the three options I see are:
    
     - add a bogus initialization, which would increase the runtime overhead
     - replace unlikely() with unlikely_notrace()
     - remove the unlikely() annotation completely
    
    I checked the object code for a typical x86 configuration and the last
    two cases produce the same result, so I went for the last one, which is
    the simplest.
    
    Link: http://lkml.kernel.org/r/20161024155704.3114445-1-arnd@arndb.de
    
    
    Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
    Acked-by: default avatarJesper Dangaard Brouer <brouer@redhat.com>
    Cc: Arnd Bergmann <arnd@arndb.de>
    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.dev@gmail.com>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: Laura Abbott <labbott@fedoraproject.org>
    Cc: Alexander Potapenko <glider@google.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    84582c8a