• Eric Dumazet's avatar
    udp: annotate data-races around udp->encap_type · 70a36f57
    Eric Dumazet authored
    syzbot/KCSAN complained about UDP_ENCAP_L2TPINUDP setsockopt() racing.
    
    Add READ_ONCE()/WRITE_ONCE() to document races on this lockless field.
    
    syzbot report was:
    BUG: KCSAN: data-race in udp_lib_setsockopt / udp_lib_setsockopt
    
    read-write to 0xffff8881083603fa of 1 bytes by task 16557 on cpu 0:
    udp_lib_setsockopt+0x682/0x6c0
    udp_setsockopt+0x73/0xa0 net/ipv4/udp.c:2779
    sock_common_setsockopt+0x61/0x70 net/core/sock.c:3697
    __sys_setsockopt+0x1c9/0x230 net/socket.c:2263
    __do_sys_setsockopt net/socket.c:2274 [inline]
    __se_sys_setsockopt net/socket.c:2271 [inline]
    __x64_sys_setsockopt+0x66/0x80 net/socket.c:2271
    do_syscall_x64 arch/x86/entry/common.c:50 [inline]
    do_syscall_64+0x41/0xc0 arch/x86/entry/common.c:80
    entry_SYSCALL_64_after_hwframe+0x63/0xcd
    
    read-write to 0xffff8881083603fa of 1 bytes by task 16554 on cpu 1:
    udp_lib_setsockopt+0x682/0x6c0
    udp_setsockopt+0x73/0xa0 net/ipv4/udp.c:2779
    sock_common_setsockopt+0x61/0x70 net/core/sock.c:3697
    __sys_setsockopt+0x1c9/0x230 net/socket.c:2263
    __do_sys_setsockopt net/socket.c:2274 [inline]
    __se_sys_setsockopt net/socket.c:2271 [inline]
    __x64_sys_setsockopt+0x66/0x80 net/socket.c:2271
    do_syscall_x64 arch/x86/entry/common.c:50 [inline]
    do_syscall_64+0x41/0xc0 arch/x86/entry/common.c:80
    entry_SYSCALL_64_after_hwframe+0x63/0xcd
    
    value changed: 0x01 -> 0x05
    
    Reported by Kernel Concurrency Sanitizer on:
    CPU: 1 PID: 16554 Comm: syz-executor.5 Not tainted 6.5.0-rc7-syzkaller-00004-gf7757129 #0
    
    Fixes: 1da177e4 ("Linux-2.6.12-rc2")
    Reported-by: default avatarsyzbot <syzkaller@googlegroups.com>
    Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
    Reviewed-by: default avatarWillem de Bruijn <willemb@google.com>
    Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
    70a36f57
l2tp_core.c 45 KB