Skip to content
  • Weilong Chen's avatar
    fork: annotate data race in copy_process() · c17d1a3a
    Weilong Chen authored
    KCSAN reported data race reading and writing nr_threads and max_threads.
    The data race is intentional and benign. This is obvious from the comment
    above it and based on general consensus when discussing this issue. So
    there's no need for any heavy atomic or *_ONCE() machinery here.
    
    In accordance with the newly introduced data_race() annotation consensus,
    mark the offending line with data_race(). Here it's actually useful not
    just to silence KCSAN but to also clearly communicate that the race is
    intentional. This is especially helpful since nr_threads is otherwise
    protected by tasklist_lock.
    
    BUG: KCSAN: data-race in copy_process / copy_process
    
    write to 0xffffffff86205cf8 of 4 bytes by task 14779 on cpu 1:
      copy_process+0x2eba/0x3c40 kernel/fork.c:2273
      _do_fork+0xfe/0x7a0 kernel/fork.c:2421
      __do_sys_clone kernel/fork.c:2576 [inline]
      __se_sys_clone kernel/fork.c:2557 [inline]
      __x64_sys_clone+0x130/0x170 kernel/fork.c:2557
      do_syscall_64+0xcc/0x3a0 arch/x86/entry/common.c:294
      entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    read to 0xffffffff86205cf8 of 4 bytes by task 6944 on cpu 0:
      copy_process+0x94d/0x3c40 kernel/fork.c:1954
      _do_fork+0xfe/0x7a0 kernel/fork.c:2421
      __do_sys_clone kernel/fork.c:2576 [inline]
      __se_sys_clone kernel/fork.c:2557 [inline]
      __x64_sys_clone+0x130/0x170 kernel/fork.c:2557
      do_syscall_64+0xcc/0x3a0 arch/x86/entry/common.c:294
      entry_SYSCALL_64_after_hwframe+0x44/0xa9
    Link: https://groups.google.com/forum/#!msg/syzkaller-upstream-mo
    
    
    deration/thvp7AHs5Ew/aPdYLXfYBQAJ
    
    Reported-by: default avatar <syzbot+52fced2d288f8ecd2b20@syzkaller.appspotmail.com>
    Signed-off-by: default avatarZefan Li <lizefan@huawei.com>
    Signed-off-by: default avatarWeilong Chen <chenweilong@huawei.com>
    Acked-by: default avatarChristian Brauner <christian.brauner@ubuntu.com>
    Cc: Qian Cai <cai@lca.pw>
    Cc: Oleg Nesterov <oleg@redhat.com>
    Cc: Christian Brauner <christian.brauner@ubuntu.com>
    Cc: Marco Elver <elver@google.com>
    [christian.brauner@ubuntu.com: rewrite commit message]
    Link: https://lore.kernel.org/r/20200623041240.154294-1-chenweilong@huawei.com
    
    
    Signed-off-by: default avatarChristian Brauner <christian.brauner@ubuntu.com>
    c17d1a3a