• Breno Leitao's avatar
    debugobjects: Annotate racy debug variables · 5b5baba6
    Breno Leitao authored
    KCSAN has identified a potential data race in debugobjects, where the
    global variable debug_objects_maxchain is accessed for both reading and
    writing simultaneously in separate and parallel data paths. This results in
    the following splat printed by KCSAN:
    
      BUG: KCSAN: data-race in debug_check_no_obj_freed / debug_object_activate
    
      write to 0xffffffff847ccfc8 of 4 bytes by task 734 on cpu 41:
      debug_object_activate (lib/debugobjects.c:199 lib/debugobjects.c:564 lib/debugobjects.c:710)
      call_rcu (kernel/rcu/rcu.h:227 kernel/rcu/tree.c:2719 kernel/rcu/tree.c:2838)
      security_inode_free (security/security.c:1626)
      __destroy_inode (./include/linux/fsnotify.h:222 fs/inode.c:287)
      ...
      read to 0xffffffff847ccfc8 of 4 bytes by task 384 on cpu 31:
      debug_check_no_obj_freed (lib/debugobjects.c:1000 lib/debugobjects.c:1019)
      kfree (mm/slub.c:2081 mm/slub.c:4280 mm/slub.c:4390)
      percpu_ref_exit (lib/percpu-refcount.c:147)
      css_free_rwork_fn (kernel/cgroup/cgroup.c:5357)
      ...
      value changed: 0x00000070 -> 0x00000071
    
    The data race is actually harmless as this is just used for debugfs
    statistics, as all other debug variables.
    
    Annotate all debug variables as racy explicitly, since these variables
    are known to be racy and harmless.
    Signed-off-by: default avatarBreno Leitao <leitao@debian.org>
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Link: https://lore.kernel.org/r/20240611091813.1189860-1-leitao@debian.org
    5b5baba6
debugobjects.c 36 KB