• Eric Dumazet's avatar
    netlink: annotate data races around nlk->bound · 7707a4d0
    Eric Dumazet authored
    While existing code is correct, KCSAN is reporting
    a data-race in netlink_insert / netlink_sendmsg [1]
    
    It is correct to read nlk->bound without a lock, as netlink_autobind()
    will acquire all needed locks.
    
    [1]
    BUG: KCSAN: data-race in netlink_insert / netlink_sendmsg
    
    write to 0xffff8881031c8b30 of 1 bytes by task 18752 on cpu 0:
     netlink_insert+0x5cc/0x7f0 net/netlink/af_netlink.c:597
     netlink_autobind+0xa9/0x150 net/netlink/af_netlink.c:842
     netlink_sendmsg+0x479/0x7c0 net/netlink/af_netlink.c:1892
     sock_sendmsg_nosec net/socket.c:703 [inline]
     sock_sendmsg net/socket.c:723 [inline]
     ____sys_sendmsg+0x360/0x4d0 net/socket.c:2392
     ___sys_sendmsg net/socket.c:2446 [inline]
     __sys_sendmsg+0x1ed/0x270 net/socket.c:2475
     __do_sys_sendmsg net/socket.c:2484 [inline]
     __se_sys_sendmsg net/socket.c:2482 [inline]
     __x64_sys_sendmsg+0x42/0x50 net/socket.c:2482
     do_syscall_x64 arch/x86/entry/common.c:50 [inline]
     do_syscall_64+0x3d/0x90 arch/x86/entry/common.c:80
     entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    read to 0xffff8881031c8b30 of 1 bytes by task 18751 on cpu 1:
     netlink_sendmsg+0x270/0x7c0 net/netlink/af_netlink.c:1891
     sock_sendmsg_nosec net/socket.c:703 [inline]
     sock_sendmsg net/socket.c:723 [inline]
     __sys_sendto+0x2a8/0x370 net/socket.c:2019
     __do_sys_sendto net/socket.c:2031 [inline]
     __se_sys_sendto net/socket.c:2027 [inline]
     __x64_sys_sendto+0x74/0x90 net/socket.c:2027
     do_syscall_x64 arch/x86/entry/common.c:50 [inline]
     do_syscall_64+0x3d/0x90 arch/x86/entry/common.c:80
     entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    value changed: 0x00 -> 0x01
    
    Reported by Kernel Concurrency Sanitizer on:
    CPU: 1 PID: 18751 Comm: syz-executor.0 Not tainted 5.14.0-rc1-syzkaller #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    
    Fixes: da314c99 ("netlink: Replace rhash_portid with bound")
    Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
    Reported-by: default avatarsyzbot <syzkaller@googlegroups.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    7707a4d0
af_netlink.c 68.5 KB