Skip to content
  • Chintan Pandya's avatar
    mm/slub.c: use jitter-free reference while printing age · 86609d33
    Chintan Pandya authored
    When SLUB_DEBUG catches some issues, it prints all the required debug
    info.  However, in a few cases where allocation and free of the object
    has happened in a very short time, 'age' might be misleading.  See the
    example below:
    
      =============================================================================
      BUG kmalloc-256 (Tainted: G        W  O   ): Poison overwritten
      -----------------------------------------------------------------------------
      ...
      INFO: Allocated in binder_transaction+0x4b0/0x2448 age=731 cpu=3 pid=5314
      ...
      INFO: Freed in binder_free_transaction+0x2c/0x58 age=735 cpu=6 pid=2079
      ...
      Object fffffff14956a870: 6b 6b 6b 6b 6b 6b 6b 6b 67 6b 6b 6b 6b 6b 6b a5  kkkkkkkkgkkkk
    
    In this case, object got freed later but 'age' shows otherwise.  This
    could be because, while printing this info, we print allocation traces
    first and free traces thereafter.  In between, if we get schedule out or
    jiffies increment, (jiffies - t->when) could become meaningless.
    
    Use the jitter free reference to calculate age.
    
    New output will exactly be same.  'age' is still staying with single
    jiffies ref in both prints.
    
    Change-Id: I0846565807a4229748649bbecb1ffb743d71fcd8
    Link: http://lkml.kernel.org/r/1520492010-19389-1-git-send-email-cpandya@codeaurora.org
    
    
    Signed-off-by: default avatarChintan Pandya <cpandya@codeaurora.org>
    Acked-by: default avatarChristoph Lameter <cl@linux.com>
    Reviewed-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Cc: Pekka Enberg <penberg@kernel.org>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    86609d33