======================================
| [ 5952.723145][ C0] ==================================================================
| [ 5952.723514][ C0] BUG: KASAN: slab-use-after-free in __udp_enqueue_schedule_skb (./arch/x86/include/asm/atomic.h:23 ./include/linux/atomic/atomic-arch-fallback.h:457 ./include/linux/atomic/atomic-instrumented.h:33 net/ipv4/udp.c:1717)
| [ 5952.723875][ C0] Read of size 4 at addr ffff88800c10e148 by task nettest/15654
| [ 5952.724170][ C0]
[ 5952.724281][ C0] Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011
[ 5952.724283][ C0] Call Trace:
[ 5952.724286][ C0]
[ 5952.724288][ C0] dump_stack_lvl (lib/dump_stack.c:123)
[ 5952.724295][ C0] print_address_description.constprop.0 (mm/kasan/report.c:379)
[ 5952.724304][ C0] ? __udp_enqueue_schedule_skb (./arch/x86/include/asm/atomic.h:23 ./include/linux/atomic/atomic-arch-fallback.h:457 ./include/linux/atomic/atomic-instrumented.h:33 net/ipv4/udp.c:1717)
[ 5952.724308][ C0] print_report (mm/kasan/report.c:483)
[ 5952.724312][ C0] ? __udp_enqueue_schedule_skb (./arch/x86/include/asm/atomic.h:23 ./include/linux/atomic/atomic-arch-fallback.h:457 ./include/linux/atomic/atomic-instrumented.h:33 net/ipv4/udp.c:1717)
[ 5952.724315][ C0] ? kasan_addr_to_slab (./include/linux/mm.h:1180 mm/kasan/../slab.h:187 mm/kasan/common.c:38)
[ 5952.724319][ C0] ? __udp_enqueue_schedule_skb (./arch/x86/include/asm/atomic.h:23 ./include/linux/atomic/atomic-arch-fallback.h:457 ./include/linux/atomic/atomic-instrumented.h:33 net/ipv4/udp.c:1717)
[ 5952.724322][ C0] kasan_report (mm/kasan/report.c:597)
[ 5952.724326][ C0] ? __udp_enqueue_schedule_skb (./arch/x86/include/asm/atomic.h:23 ./include/linux/atomic/atomic-arch-fallback.h:457 ./include/linux/atomic/atomic-instrumented.h:33 net/ipv4/udp.c:1717)
[ 5952.724332][ C0] kasan_check_range (mm/kasan/generic.c:183 mm/kasan/generic.c:189)
[ 5952.724336][ C0] __udp_enqueue_schedule_skb (./arch/x86/include/asm/atomic.h:23 ./include/linux/atomic/atomic-arch-fallback.h:457 ./include/linux/atomic/atomic-instrumented.h:33 net/ipv4/udp.c:1717)
[ 5952.724340][ C0] ? sk_filter_trim_cap (net/core/filter.c:136)
[ 5952.724346][ C0] ? reuseport_select_sock (net/core/sock_reuseport.c:608)
[ 5952.724351][ C0] ? fib_lookup.constprop.0 (net/core/filter.c:136)
[ 5952.724354][ C0] ? udp_sendmsg (net/ipv4/udp.c:1700)
[ 5952.724360][ C0] udpv6_queue_rcv_one_skb (net/ipv6/udp.c:795 net/ipv6/udp.c:905)
[ 5952.724366][ C0] ? __udp6_lib_lookup (net/ipv6/udp.c:392)
[ 5952.724370][ C0] ? __xfrm_policy_check2.constprop.0 (net/ipv4/ip_input.c:390)
[ 5952.724376][ C0] udp6_unicast_rcv_skb (net/ipv6/udp.c:1069 (discriminator 3))
[ 5952.724381][ C0] __udp6_lib_rcv (net/ipv6/udp.c:1152)
[ 5952.724386][ C0] ? udpv6_err (net/ipv6/udp.c:1073)
[ 5952.724392][ C0] ip6_protocol_deliver_rcu (net/ipv6/ip6_input.c:440)
[ 5952.724408][ C0] ? rcu_is_watching (./include/linux/context_tracking.h:128 kernel/rcu/tree.c:751)
[ 5952.724417][ C0] ip6_input_finish (net/ipv6/ip6_input.c:492)
[ 5952.724421][ C0] ip6_input (./include/linux/netfilter.h:318 ./include/linux/netfilter.h:312 net/ipv6/ip6_input.c:500)
[ 5952.724425][ C0] ? ip6_input_finish (net/ipv6/ip6_input.c:496)
[ 5952.724428][ C0] ? ip6_rcv_core (./include/linux/rcupdate.h:341 ./include/linux/rcupdate.h:871 net/ipv6/ip6_input.c:288)
[ 5952.724432][ C0] ? ip6_rcv_core (./include/net/sock.h:2941 net/ipv6/ip6_input.c:291)
[ 5952.724438][ C0] ipv6_rcv (./include/net/dst.h:474 net/ipv6/ip6_input.c:79 ./include/linux/netfilter.h:318 ./include/linux/netfilter.h:312 net/ipv6/ip6_input.c:311)
[ 5952.724442][ C0] ? __xfrm_policy_check2.constprop.0 (./include/net/dst_metadata.h:97 net/ipv4/ip_input.c:367)
[ 5952.724445][ C0] ? rcu_read_lock_any_held (kernel/rcu/update.c:386 kernel/rcu/update.c:380)
[ 5952.724449][ C0] ? validate_chain (kernel/locking/lockdep.c:3801 kernel/locking/lockdep.c:3821 kernel/locking/lockdep.c:3876)
[ 5952.724456][ C0] ? __lock_acquire (kernel/locking/lockdep.c:5237)
[ 5952.724460][ C0] ? __xfrm_policy_check2.constprop.0 (./include/net/dst_metadata.h:97 net/ipv4/ip_input.c:367)
[ 5952.724463][ C0] ? process_backlog (./include/linux/local_lock_internal.h:54 net/core/dev.c:6535)
[ 5952.724469][ C0] __netif_receive_skb_one_core (net/core/dev.c:6065)
[ 5952.724473][ C0] ? __netif_receive_skb_list_core (net/core/dev.c:6065)
[ 5952.724478][ C0] ? rcu_is_watching (./include/linux/context_tracking.h:128 kernel/rcu/tree.c:751)
[ 5952.724481][ C0] ? lock_acquire (./include/trace/events/lock.h:24 kernel/locking/lockdep.c:5831)
[ 5952.724483][ C0] ? process_backlog (./include/linux/local_lock_internal.h:54 net/core/dev.c:6535)
[ 5952.724488][ C0] process_backlog (./include/linux/rcupdate.h:869 net/core/dev.c:6538)
[ 5952.724494][ C0] __napi_poll.constprop.0 (net/core/dev.c:7588)
[ 5952.724499][ C0] net_rx_action (net/core/dev.c:7650 net/core/dev.c:7777)
[ 5952.724506][ C0] ? __napi_poll.constprop.0 (net/core/dev.c:7739)
[ 5952.724509][ C0] ? sched_ttwu_pending (kernel/sched/core.c:3840 (discriminator 2))
[ 5952.724514][ C0] ? __lock_release (kernel/locking/lockdep.c:5536)
[ 5952.724518][ C0] ? do_raw_spin_unlock (./arch/x86/include/asm/atomic.h:23 ./include/linux/atomic/atomic-arch-fallback.h:457 ./include/linux/atomic/atomic-instrumented.h:33 ./include/asm-generic/qspinlock.h:57 kernel/locking/spinlock_debug.c:101 kernel/locking/spinlock_debug.c:141)
[ 5952.724522][ C0] ? _raw_spin_unlock (./arch/x86/include/asm/preempt.h:104 ./include/linux/spinlock_api_smp.h:143 kernel/locking/spinlock.c:186)
[ 5952.724530][ C0] ? ttwu_do_activate (kernel/sched/core.c:3821)
[ 5952.724535][ C0] handle_softirqs (kernel/softirq.c:580)
[ 5952.724540][ C0] ? __dev_queue_xmit (./include/linux/rcupdate.h:341 ./include/linux/rcupdate.h:908 net/core/dev.c:4784)
[ 5952.724544][ C0] do_softirq (kernel/softirq.c:480 kernel/softirq.c:467)
[ 5952.724547][ C0]
[ 5952.724548][ C0]
[ 5952.724550][ C0] __local_bh_enable_ip (kernel/softirq.c:407)
[ 5952.724553][ C0] ? __dev_queue_xmit (./include/linux/rcupdate.h:341 ./include/linux/rcupdate.h:908 net/core/dev.c:4784)
[ 5952.724556][ C0] __dev_queue_xmit (net/core/dev.c:4785)
[ 5952.724560][ C0] ? __lock_acquire (kernel/locking/lockdep.c:5237)
[ 5952.724565][ C0] ? netdev_core_pick_tx (net/core/dev.c:4665)
[ 5952.724568][ C0] ? ip6_finish_output (net/ipv6/ip6_output.c:209 net/ipv6/ip6_output.c:220)
[ 5952.724573][ C0] ? neigh_hh_output (./include/linux/seqlock.h:74 ./include/linux/seqlock.h:836 ./include/net/neighbour.h:501)
[ 5952.724576][ C0] ? lockdep_hardirqs_on (kernel/locking/lockdep.c:4472)
[ 5952.724581][ C0] ? neigh_hh_output (./include/linux/seqlock.h:74 ./include/linux/seqlock.h:836 ./include/net/neighbour.h:501)
[ 5952.724587][ C0] ip6_finish_output (net/ipv6/ip6_output.c:209 net/ipv6/ip6_output.c:220)
[ 5952.724591][ C0] ip6_output (./include/linux/netfilter.h:307 net/ipv6/ip6_output.c:247)
[ 5952.724595][ C0] ? ip6_finish_output (net/ipv6/ip6_output.c:228)
[ 5952.724603][ C0] ip6_send_skb (net/ipv6/ip6_output.c:1994)
[ 5952.724606][ C0] udp_v6_send_skb (net/ipv6/udp.c:1440)
[ 5952.724609][ C0] ? jhash.constprop.0 (./include/linux/bitops.h:126 ./include/linux/jhash.h:101)
[ 5952.724615][ C0] udpv6_sendmsg (net/ipv6/udp.c:1731)
[ 5952.724617][ C0] ? find_held_lock (kernel/locking/lockdep.c:5350)
[ 5952.724620][ C0] ? ip_select_ident_segs (net/ipv4/ip_output.c:934)
[ 5952.724629][ C0] ? udpv6_splice_eof (net/ipv6/udp.c:1476)
[ 5952.724635][ C0] ? rcu_read_lock_any_held (kernel/rcu/update.c:386 kernel/rcu/update.c:380)
[ 5952.724638][ C0] ? validate_chain (kernel/locking/lockdep.c:3801 kernel/locking/lockdep.c:3821 kernel/locking/lockdep.c:3876)
[ 5952.724647][ C0] ? __might_fault (mm/memory.c:6958 mm/memory.c:6952)
[ 5952.724653][ C0] ? __lock_release (kernel/locking/lockdep.c:5536)
[ 5952.724659][ C0] ? __sys_sendto (net/socket.c:714 net/socket.c:729 net/socket.c:2228)
[ 5952.724664][ C0] __sys_sendto (net/socket.c:714 net/socket.c:729 net/socket.c:2228)
[ 5952.724667][ C0] ? __ia32_sys_getpeername (net/socket.c:2195)
[ 5952.724676][ C0] ? __sys_recvmsg_sock (net/socket.c:2894)
[ 5952.724683][ C0] __x64_sys_sendto (net/socket.c:2231)
[ 5952.724687][ C0] ? do_syscall_64 (./arch/x86/include/asm/irqflags.h:42 ./arch/x86/include/asm/irqflags.h:119 ./include/linux/entry-common.h:124 arch/x86/entry/syscall_64.c:90)
[ 5952.724690][ C0] ? lockdep_hardirqs_on (kernel/locking/lockdep.c:4472)
[ 5952.724693][ C0] do_syscall_64 (arch/x86/entry/syscall_64.c:63 arch/x86/entry/syscall_64.c:94)
[ 5952.724697][ C0] entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:130)
[ 5952.724701][ C0] RIP: 0033:0x7f958899528a
[ 5952.724706][ C0] Code: d8 64 89 02 48 c7 c0 ff ff ff ff eb b8 0f 1f 00 f3 0f 1e fa 41 89 ca 64 8b 04 25 18 00 00 00 85 c0 75 15 b8 2c 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 7e c3 0f 1f 44 00 00 41 54 48 83 ec 30 44 89
All code
========
0: d8 64 89 02 fsubs 0x2(%rcx,%rcx,4)
4: 48 c7 c0 ff ff ff ff mov $0xffffffffffffffff,%rax
b: eb b8 jmp 0xffffffffffffffc5
d: 0f 1f 00 nopl (%rax)
10: f3 0f 1e fa endbr64
14: 41 89 ca mov %ecx,%r10d
17: 64 8b 04 25 18 00 00 mov %fs:0x18,%eax
1e: 00
1f: 85 c0 test %eax,%eax
21: 75 15 jne 0x38
23: b8 2c 00 00 00 mov $0x2c,%eax
28: 0f 05 syscall
2a:* 48 3d 00 f0 ff ff cmp $0xfffffffffffff000,%rax <-- trapping instruction
30: 77 7e ja 0xb0
32: c3 ret
33: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1)
38: 41 54 push %r12
3a: 48 83 ec 30 sub $0x30,%rsp
3e: 44 rex.R
3f: 89 .byte 0x89
Code starting with the faulting instruction
===========================================
0: 48 3d 00 f0 ff ff cmp $0xfffffffffffff000,%rax
6: 77 7e ja 0x86
8: c3 ret
9: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1)
e: 41 54 push %r12
10: 48 83 ec 30 sub $0x30,%rsp
14: 44 rex.R
15: 89 .byte 0x89
[ 5952.724708][ C0] RSP: 002b:00007fff8ef538b8 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[ 5952.724713][ C0] RAX: ffffffffffffffda RBX: 000000000000001c RCX: 00007f958899528a
[ 5952.724715][ C0] RDX: 000000000000000c RSI: 0000000000406752 RDI: 0000000000000005
[ 5952.724717][ C0] RBP: 0000000000000005 R08: 00007fff8ef53e40 R09: 000000000000001c
[ 5952.724719][ C0] R10: 0000000000000000 R11: 0000000000000246 R12: 00007fff8ef53e40
Finger prints:
print_report:kasan_report:kasan_check_range:__udp_enqueue_schedule_skb:udpv6_queue_rcv_one_skb