====================================== | [ 1774.887762][ C0] ================================================================== | [ 1774.888140][ 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) | [ 1774.888530][ C0] Read of size 4 at addr ffff888004cad448 by task nettest/12718 | [ 1774.888833][ C0] [ 1774.888944][ C0] Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011 [ 1774.888947][ C0] Call Trace: [ 1774.888949][ C0] [ 1774.888951][ C0] dump_stack_lvl (lib/dump_stack.c:123) [ 1774.888958][ C0] print_address_description.constprop.0 (mm/kasan/report.c:379) [ 1774.888968][ 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) [ 1774.888972][ C0] print_report (mm/kasan/report.c:483) [ 1774.888975][ 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) [ 1774.888978][ C0] ? kasan_addr_to_slab (./include/linux/mm.h:1180 mm/kasan/../slab.h:187 mm/kasan/common.c:38) [ 1774.888981][ 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) [ 1774.888985][ C0] kasan_report (mm/kasan/report.c:597) [ 1774.888989][ 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) [ 1774.888994][ C0] kasan_check_range (mm/kasan/generic.c:183 mm/kasan/generic.c:189) [ 1774.888998][ 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) [ 1774.889002][ C0] ? sk_filter_trim_cap (net/core/filter.c:136) [ 1774.889009][ C0] ? fib_lookup.constprop.0 (net/core/filter.c:136) [ 1774.889012][ C0] ? udp_sendmsg (net/ipv4/udp.c:1700) [ 1774.889015][ C0] ? udp6_lib_lookup2 (net/ipv6/udp.c:247) [ 1774.889022][ C0] ? __xfrm_policy_check2.constprop.0 (./include/net/net_namespace.h:409 ./include/linux/netdevice.h:2722 ./include/net/xfrm.h:1273) [ 1774.889026][ C0] udpv6_queue_rcv_one_skb (net/ipv6/udp.c:795 net/ipv6/udp.c:905) [ 1774.889029][ C0] ? __udp6_lib_lookup (net/ipv6/udp.c:392) [ 1774.889033][ C0] ? __xfrm_policy_check2.constprop.0 (net/ipv4/ip_input.c:390) [ 1774.889039][ C0] udp6_unicast_rcv_skb (net/ipv6/udp.c:1069 (discriminator 3)) [ 1774.889043][ C0] __udp6_lib_rcv (net/ipv6/udp.c:1152) [ 1774.889048][ C0] ? udpv6_err (net/ipv6/udp.c:1073) [ 1774.889053][ C0] ip6_protocol_deliver_rcu (net/ipv6/ip6_input.c:440) [ 1774.889062][ C0] ? rcu_is_watching (./include/linux/context_tracking.h:128 kernel/rcu/tree.c:751) [ 1774.889072][ C0] ip6_input_finish (net/ipv6/ip6_input.c:492) [ 1774.889076][ C0] ip6_input (./include/linux/netfilter.h:318 ./include/linux/netfilter.h:312 net/ipv6/ip6_input.c:500) [ 1774.889079][ C0] ? ip6_input_finish (net/ipv6/ip6_input.c:496) [ 1774.889083][ C0] ? ip6_rcv_core (./include/linux/skbuff.h:3371 net/ipv6/ip6_input.c:292) [ 1774.889089][ 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) [ 1774.889092][ C0] ? __xfrm_policy_check2.constprop.0 (./include/net/dst_metadata.h:97 net/ipv4/ip_input.c:367) [ 1774.889096][ C0] ? rcu_read_lock_any_held (kernel/rcu/update.c:386 kernel/rcu/update.c:380) [ 1774.889099][ C0] ? validate_chain (kernel/locking/lockdep.c:3801 kernel/locking/lockdep.c:3821 kernel/locking/lockdep.c:3876) [ 1774.889105][ C0] ? __lock_acquire (kernel/locking/lockdep.c:5237) [ 1774.889109][ C0] ? __xfrm_policy_check2.constprop.0 (./include/net/dst_metadata.h:97 net/ipv4/ip_input.c:367) [ 1774.889112][ C0] ? process_backlog (./include/linux/local_lock_internal.h:54 net/core/dev.c:6535) [ 1774.889117][ C0] __netif_receive_skb_one_core (net/core/dev.c:6065) [ 1774.889120][ C0] ? __netif_receive_skb_list_core (net/core/dev.c:6065) [ 1774.889124][ C0] ? rcu_is_watching (./include/linux/context_tracking.h:128 kernel/rcu/tree.c:751) [ 1774.889128][ C0] ? lock_acquire (./include/trace/events/lock.h:24 kernel/locking/lockdep.c:5831) [ 1774.889130][ C0] ? process_backlog (./include/linux/local_lock_internal.h:54 net/core/dev.c:6535) [ 1774.889135][ C0] process_backlog (./include/linux/rcupdate.h:869 net/core/dev.c:6538) [ 1774.889140][ C0] __napi_poll.constprop.0 (net/core/dev.c:7588) [ 1774.889145][ C0] net_rx_action (net/core/dev.c:7650 net/core/dev.c:7777) [ 1774.889150][ C0] ? __lock_release (kernel/locking/lockdep.c:5536) [ 1774.889154][ C0] ? __napi_poll.constprop.0 (net/core/dev.c:7739) [ 1774.889160][ C0] ? trace_rcu_batch_end (kernel/rcu/tree.c:2529) [ 1774.889164][ C0] ? note_gp_changes (kernel/rcu/tree.c:1332 (discriminator 1)) [ 1774.889166][ C0] ? lockdep_hardirqs_on (kernel/locking/lockdep.c:4472) [ 1774.889175][ C0] handle_softirqs (kernel/softirq.c:580) [ 1774.889182][ C0] ? __dev_queue_xmit (./include/linux/rcupdate.h:341 ./include/linux/rcupdate.h:908 net/core/dev.c:4784) [ 1774.889186][ C0] do_softirq (kernel/softirq.c:480 kernel/softirq.c:467) [ 1774.889189][ C0] [ 1774.889190][ C0] [ 1774.889191][ C0] __local_bh_enable_ip (kernel/softirq.c:407) [ 1774.889194][ C0] ? __dev_queue_xmit (./include/linux/rcupdate.h:341 ./include/linux/rcupdate.h:908 net/core/dev.c:4784) [ 1774.889197][ C0] __dev_queue_xmit (net/core/dev.c:4785) [ 1774.889201][ C0] ? __lock_acquire (kernel/locking/lockdep.c:5237) [ 1774.889206][ C0] ? netdev_core_pick_tx (net/core/dev.c:4665) [ 1774.889209][ C0] ? ip6_finish_output (net/ipv6/ip6_output.c:209 net/ipv6/ip6_output.c:220) [ 1774.889214][ C0] ? neigh_hh_output (./include/linux/seqlock.h:74 ./include/linux/seqlock.h:836 ./include/net/neighbour.h:501) [ 1774.889217][ C0] ? lockdep_hardirqs_on (kernel/locking/lockdep.c:4472) [ 1774.889220][ C0] ? neigh_hh_output (./include/linux/seqlock.h:74 ./include/linux/seqlock.h:836 ./include/net/neighbour.h:501) [ 1774.889227][ C0] ip6_finish_output (net/ipv6/ip6_output.c:209 net/ipv6/ip6_output.c:220) [ 1774.889231][ C0] ip6_output (./include/linux/netfilter.h:307 net/ipv6/ip6_output.c:247) [ 1774.889235][ C0] ? ip6_finish_output (net/ipv6/ip6_output.c:228) [ 1774.889242][ C0] ip6_send_skb (net/ipv6/ip6_output.c:1994) [ 1774.889246][ C0] udp_v6_send_skb (net/ipv6/udp.c:1440) [ 1774.889249][ C0] ? jhash.constprop.0 (./include/linux/bitops.h:126 ./include/linux/jhash.h:101) [ 1774.889254][ C0] udpv6_sendmsg (net/ipv6/udp.c:1731) [ 1774.889257][ C0] ? find_held_lock (kernel/locking/lockdep.c:5350) [ 1774.889260][ C0] ? ip_select_ident_segs (net/ipv4/ip_output.c:934) [ 1774.889267][ C0] ? udpv6_splice_eof (net/ipv6/udp.c:1476) [ 1774.889273][ C0] ? rcu_read_lock_any_held (kernel/rcu/update.c:386 kernel/rcu/update.c:380) [ 1774.889276][ C0] ? validate_chain (kernel/locking/lockdep.c:3801 kernel/locking/lockdep.c:3821 kernel/locking/lockdep.c:3876) [ 1774.889284][ C0] ? __might_fault (mm/memory.c:6958 mm/memory.c:6952) [ 1774.889289][ C0] ? __lock_release (kernel/locking/lockdep.c:5536) [ 1774.889294][ C0] ? __sys_sendto (net/socket.c:714 net/socket.c:729 net/socket.c:2228) [ 1774.889299][ C0] __sys_sendto (net/socket.c:714 net/socket.c:729 net/socket.c:2228) [ 1774.889303][ C0] ? __ia32_sys_getpeername (net/socket.c:2195) [ 1774.889305][ C0] ? do_pselect.constprop.0 (fs/select.c:283 fs/select.c:271 fs/select.c:751) [ 1774.889310][ C0] ? __lock_release (kernel/locking/lockdep.c:5536) [ 1774.889314][ C0] ? kvm_clock_get_cycles (./arch/x86/include/asm/preempt.h:95 arch/x86/kernel/kvmclock.c:80 arch/x86/kernel/kvmclock.c:86) [ 1774.889323][ C0] ? __sys_recvmsg_sock (net/socket.c:2894) [ 1774.889326][ C0] ? kern_select (fs/select.c:728) [ 1774.889333][ C0] __x64_sys_sendto (net/socket.c:2231) [ 1774.889336][ 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) [ 1774.889339][ C0] ? lockdep_hardirqs_on (kernel/locking/lockdep.c:4472) [ 1774.889342][ C0] do_syscall_64 (arch/x86/entry/syscall_64.c:63 arch/x86/entry/syscall_64.c:94) [ 1774.889345][ C0] entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:130) [ 1774.889349][ C0] RIP: 0033:0x7f745e54c28a [ 1774.889353][ 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 [ 1774.889355][ C0] RSP: 002b:00007ffeb3fe31d8 EFLAGS: 00000246 ORIG_RAX: 000000000000002c [ 1774.889360][ C0] RAX: ffffffffffffffda RBX: 000000000000001c RCX: 00007f745e54c28a [ 1774.889362][ C0] RDX: 000000000000000c RSI: 0000000000406752 RDI: 0000000000000005 [ 1774.889364][ C0] RBP: 0000000000000005 R08: 00007ffeb3fe3760 R09: 000000000000001c [ 1774.889365][ C0] R10: 0000000000000000 R11: 0000000000000246 R12: 00007ffeb3fe3760 Finger prints: print_report:kasan_report:kasan_check_range:__udp_enqueue_schedule_skb:udpv6_queue_rcv_one_skb