• Eric Dumazet's avatar
    net: annotate races around sk->sk_bound_dev_if · 4c971d2f
    Eric Dumazet authored
    UDP sendmsg() is lockless, and reads sk->sk_bound_dev_if while
    this field can be changed by another thread.
    
    Adds minimal annotations to avoid KCSAN splats for UDP.
    Following patches will add more annotations to potential lockless readers.
    
    BUG: KCSAN: data-race in __ip6_datagram_connect / udpv6_sendmsg
    
    write to 0xffff888136d47a94 of 4 bytes by task 7681 on cpu 0:
     __ip6_datagram_connect+0x6e2/0x930 net/ipv6/datagram.c:221
     ip6_datagram_connect+0x2a/0x40 net/ipv6/datagram.c:272
     inet_dgram_connect+0x107/0x190 net/ipv4/af_inet.c:576
     __sys_connect_file net/socket.c:1900 [inline]
     __sys_connect+0x197/0x1b0 net/socket.c:1917
     __do_sys_connect net/socket.c:1927 [inline]
     __se_sys_connect net/socket.c:1924 [inline]
     __x64_sys_connect+0x3d/0x50 net/socket.c:1924
     do_syscall_x64 arch/x86/entry/common.c:50 [inline]
     do_syscall_64+0x2b/0x50 arch/x86/entry/common.c:80
     entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    read to 0xffff888136d47a94 of 4 bytes by task 7670 on cpu 1:
     udpv6_sendmsg+0xc60/0x16e0 net/ipv6/udp.c:1436
     inet6_sendmsg+0x5f/0x80 net/ipv6/af_inet6.c:652
     sock_sendmsg_nosec net/socket.c:705 [inline]
     sock_sendmsg net/socket.c:725 [inline]
     ____sys_sendmsg+0x39a/0x510 net/socket.c:2413
     ___sys_sendmsg net/socket.c:2467 [inline]
     __sys_sendmmsg+0x267/0x4c0 net/socket.c:2553
     __do_sys_sendmmsg net/socket.c:2582 [inline]
     __se_sys_sendmmsg net/socket.c:2579 [inline]
     __x64_sys_sendmmsg+0x53/0x60 net/socket.c:2579
     do_syscall_x64 arch/x86/entry/common.c:50 [inline]
     do_syscall_64+0x2b/0x50 arch/x86/entry/common.c:80
     entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    value changed: 0x00000000 -> 0xffffff9b
    
    Reported by Kernel Concurrency Sanitizer on:
    CPU: 1 PID: 7670 Comm: syz-executor.3 Tainted: G        W         5.18.0-rc1-syzkaller-dirty #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    
    I chose to not add Fixes: tag because race has minor consequences
    and stable teams busy enough.
    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>
    4c971d2f
sock.h 81.6 KB