Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

net: use-after-free in mptcp_worker (net/mptcp/protocol.h:528) #361

Closed
matttbe opened this issue Feb 20, 2023 · 1 comment
Closed

net: use-after-free in mptcp_worker (net/mptcp/protocol.h:528) #361

matttbe opened this issue Feb 20, 2023 · 1 comment
Labels

Comments

@matttbe
Copy link
Member

matttbe commented Feb 20, 2023

The public CI reported issues when validating export-net (6.2) (not with export, 6.3)

+ tee /tmp/cirrus-ci-build/packetdrill_mp_capable.tap.tmp
# OK   [/opt/packetdrill/gtests/net/mptcp/mp_capable/v1_bind_tcpfallback_flagH.pkt (ipv6)]
[ 1711.721363][T10846] ==================================================================
[1711.733149][T10846] BUG: KASAN: use-after-free in mptcp_worker (net/mptcp/protocol.h:528) 
[ 1711.739924][T10846] Read of size 8 at addr ffff888009d76778 by task kworker/0:2/10846
[ 1711.746745][T10846] 
[ 1711.748896][T10846] CPU: 0 PID: 10846 Comm: kworker/0:2 Tainted: G                 N 6.2.0-rc8-g791be828903c #1
[ 1711.757984][T10846] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.15.0-1 04/01/2014
[ 1711.766816][T10846] Workqueue: events mptcp_worker
[ 1711.771293][T10846] Call Trace:
[ 1711.774615][T10846]  <TASK>
[1711.777483][T10846] dump_stack_lvl (lib/dump_stack.c:107 (discriminator 4)) 
[1711.781545][T10846] print_address_description.constprop.0 (mm/kasan/report.c:307) 
[1711.787801][T10846] print_report (mm/kasan/report.c:418) 
[1711.792301][T10846] ? kasan_addr_to_slab (arch/x86/include/asm/bitops.h:207) 
[1711.797839][T10846] ? mptcp_worker (net/mptcp/protocol.h:528) 
[1711.801975][T10846] kasan_report (mm/kasan/report.c:184) 
[1711.805724][T10846] ? mptcp_worker (net/mptcp/protocol.h:528) 
[1711.809221][T10846] mptcp_worker (net/mptcp/protocol.h:528) 
[1711.813130][T10846] ? rcu_read_unlock (include/linux/rcupdate.h:793 (discriminator 5)) 
[1711.816527][T10846] ? debug_object_active_state (lib/debugobjects.c:728) 
[1711.821512][T10846] ? mptcp_release_cb (net/mptcp/protocol.c:2613) 
[1711.825664][T10846] process_one_work (kernel/workqueue.c:2294) 
[1711.829537][T10846] ? rcu_read_unlock (include/linux/rcupdate.h:793 (discriminator 5)) 
[1711.832837][T10846] ? pwq_dec_nr_in_flight (kernel/workqueue.c:2184) 
[1711.836713][T10846] ? rwlock_bug.part.0 (kernel/locking/spinlock_debug.c:113) 
[1711.841128][T10846] ? _raw_spin_lock_irq (include/linux/spinlock_api_smp.h:117) 
[1711.844481][T10846] worker_thread (include/linux/list.h:292) 
[1711.847586][T10846] ? process_one_work (kernel/workqueue.c:2379) 
[1711.851488][T10846] kthread (kernel/kthread.c:376) 
[1711.854541][T10846] ? kthread_complete_and_exit (kernel/kthread.c:331) 
[1711.858686][T10846] ret_from_fork (arch/x86/entry/entry_64.S:314) 
[ 1711.862641][T10846]  </TASK>
[ 1711.865737][T10846] 
[ 1711.868132][T10846] Allocated by task 16172:
[1711.871577][T10846] kasan_save_stack (mm/kasan/common.c:46) 
[1711.874773][T10846] kasan_set_track (mm/kasan/common.c:52) 
[1711.878197][T10846] __kasan_kmalloc (mm/kasan/common.c:384) 
[1711.882406][T10846] __kmalloc (mm/slab_common.c:969) 
[1711.885246][T10846] sk_prot_alloc (include/linux/slab.h:584) 
[1711.888545][T10846] sk_clone_lock (net/core/sock.c:2244) 
[1711.892120][T10846] inet_csk_clone_lock (net/ipv4/inet_connection_sock.c:1120) 
[1711.896094][T10846] tcp_create_openreq_child (net/ipv4/tcp_minisocks.c:491) 
[1711.900578][T10846] tcp_v4_syn_recv_sock (net/ipv4/tcp_ipv4.c:1570) 
[1711.904577][T10846] tcp_v6_syn_recv_sock (net/ipv6/tcp_ipv6.c:1221) 
[1711.908552][T10846] subflow_syn_recv_sock (net/mptcp/subflow.c:786) 
[1711.912314][T10846] tcp_check_req (net/ipv4/tcp_minisocks.c:805) 
[1711.915948][T10846] tcp_v4_rcv (net/ipv4/tcp_ipv4.c:2074) 
[1711.919690][T10846] ip_protocol_deliver_rcu (net/ipv4/ip_input.c:205) 
[1711.924345][T10846] ip_local_deliver_finish (include/linux/rcupdate.h:793) 
[1711.928477][T10846] ip_local_deliver (include/linux/netfilter.h:302) 
[1711.932266][T10846] ip_rcv (include/linux/netfilter.h:302) 
[1711.935137][T10846] __netif_receive_skb_one_core (net/core/dev.c:5467) 
[1711.939427][T10846] netif_receive_skb_internal (net/core/dev.c:5674) 
[1711.943881][T10846] netif_receive_skb (net/core/dev.c:5733) 
[1711.947472][T10846] tun_rx_batched (include/linux/bottom_half.h:33) 
[1711.950973][T10846] tun_get_user (drivers/net/tun.c:1983) 
[1711.954564][T10846] tun_chr_write_iter (drivers/net/tun.c:863) 
[1711.958560][T10846] do_iter_readv_writev (fs/read_write.c:736) 
[1711.962408][T10846] do_iter_write (fs/read_write.c:861) 
[1711.966833][T10846] vfs_writev (fs/read_write.c:935) 
[1711.969885][T10846] do_writev (fs/read_write.c:977) 
[1711.973027][T10846] do_syscall_64 (arch/x86/entry/common.c:50) 
[1711.975993][T10846] entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:120) 
[ 1711.979791][T10846] 
[ 1711.981927][T10846] Freed by task 16172:
[1711.985603][T10846] kasan_save_stack (mm/kasan/common.c:46) 
[1711.989198][T10846] kasan_set_track (mm/kasan/common.c:52) 
[1711.992958][T10846] kasan_save_free_info (mm/kasan/generic.c:525) 
[1711.996921][T10846] ____kasan_slab_free (mm/kasan/common.c:238) 
[1712.001111][T10846] slab_free_freelist_hook (mm/slub.c:1807) 
[1712.004917][T10846] __kmem_cache_free (mm/slub.c:3787) 
[1712.008724][T10846] __sk_destruct (net/core/sock.c:2076) 
[1712.012599][T10846] inet_csk_listen_stop (include/net/sock.h:1991) 
[1712.016915][T10846] __mptcp_close_ssk (net/mptcp/protocol.c:2361) 
[1712.021374][T10846] mptcp_destroy_common (net/mptcp/protocol.c:3184) 
[1712.025756][T10846] mptcp_destroy (include/net/sock.h:1499) 
[1712.029920][T10846] __mptcp_destroy_sock (net/mptcp/protocol.c:2886) 
[1712.034116][T10846] __mptcp_close (net/mptcp/protocol.c:2968) 
[1712.038403][T10846] mptcp_close (net/mptcp/protocol.c:2983) 
[1712.041889][T10846] inet_release (net/ipv4/af_inet.c:433) 
[1712.046195][T10846] __sock_release (net/socket.c:651) 
[1712.050281][T10846] sock_close (net/socket.c:1370) 
[1712.054099][T10846] __fput (fs/file_table.c:320) 
[1712.057595][T10846] task_work_run (kernel/task_work.c:181 (discriminator 1)) 
[1712.062072][T10846] exit_to_user_mode_prepare (include/linux/resume_user_mode.h:49) 
[1712.066792][T10846] syscall_exit_to_user_mode (kernel/entry/common.c:130) 
[1712.071721][T10846] do_syscall_64 (arch/x86/entry/common.c:87) 
[1712.076264][T10846] entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:120) 
[ 1712.081109][T10846] 

It seems reproducible as it happened 2 days in a row:

It seems to be linked to the two patches from @pabeni I recently applied:

  • 2a20739 mptcp: fix UaF in listener shutdown
  • 2f407c3 mptcp: use the workqueue to destroy unaccepted sockets

I had some conflicts that I probably didn't resolve properly (or maybe other adaptations needed for -net?)

https://lore.kernel.org/mptcp/2cb7f6a5-5ecf-ec8a-c734-87c9fbdd1791@gmail.com/T/#mc2c87bcd67a993673f8ff66b259bba449d753d30

@matttbe matttbe added the bug label Feb 20, 2023
@matttbe
Copy link
Member Author

matttbe commented Feb 20, 2023

It looks like the two patches depend on mptcp: refactor passive socket initialization patch that is in our export branch (only). Paolo suggested to move these two patches to the export branch instead of export-net. This is what I did below.


Revert from -net side:

New patches for t/upstream-net:

  • 1403082: Revert "mptcp: use the workqueue to destroy unaccepted
    sockets"
  • a68e4d2: Revert "mptcp: fix UaF in listener shutdown"
  • Results: 67a9b5d..1231bdd (export-net)

Tests are now in progress:

https://cirrus-ci.com/github/multipath-tcp/mptcp_net-next/export-net/20230220T125607


Re-adding in net-next side before:

mptcp: avoid unneeded __mptcp_nmpc_socket() usage

New patches for t/upstream:

  • b1eb4bc: conflict in t/mptcp-drop-legacy-code
  • (9842f24: mptcp: fix wrong merge resolution)
  • bcf869e: mptcp: use the workqueue to destroy unaccepted sockets
    (net-next)
  • (f1af1e1: mptcp: add missing fix discussed on the ML)
  • be46758: conflict in
    t/mptcp-use-the-workqueue-to-destroy-unaccepted-sockets-net-next
  • cd7f29d: mptcp: fix UaF in listener shutdown (net-next)
  • Results: 6d5a19a..07db02c (export) => empty, as expected!

Tests are now in progress:

https://cirrus-ci.com/github/multipath-tcp/mptcp_net-next/export/20230220T135733

Cheers,
Matt

@matttbe matttbe closed this as completed Feb 20, 2023
jenkins-tessares pushed a commit that referenced this issue Mar 10, 2023
When sock_alloc_file fails to allocate a file, it will call sock_release.
__sys_socket_file should then not call sock_release again, otherwise there
will be a double free.

[   89.319884] ------------[ cut here ]------------
[   89.320286] kernel BUG at fs/inode.c:1764!
[   89.320656] invalid opcode: 0000 [#1] PREEMPT SMP NOPTI
[   89.321051] CPU: 7 PID: 125 Comm: iou-sqp-124 Not tainted 6.2.0+ #361
[   89.321535] RIP: 0010:iput+0x1ff/0x240
[   89.321808] Code: d1 83 e1 03 48 83 f9 02 75 09 48 81 fa 00 10 00 00 77 05 83 e2 01 75 1f 4c 89 ef e8 fb d2 ba 00 e9 80 fe ff ff c3 cc cc cc cc <0f> 0b 0f 0b e9 d0 fe ff ff 0f 0b eb 8d 49 8d b4 24 08 01 00 00 48
[   89.322760] RSP: 0018:ffffbdd60068bd50 EFLAGS: 00010202
[   89.323036] RAX: 0000000000000000 RBX: ffff9d7ad3cacac0 RCX: 0000000000001107
[   89.323412] RDX: 000000000003af00 RSI: 0000000000000000 RDI: ffff9d7ad3cacb40
[   89.323785] RBP: ffffbdd60068bd68 R08: ffffffffffffffff R09: ffffffffab606438
[   89.324157] R10: ffffffffacb3dfa0 R11: 6465686361657256 R12: ffff9d7ad3cacb40
[   89.324529] R13: 0000000080000001 R14: 0000000080000001 R15: 0000000000000002
[   89.324904] FS:  00007f7b28516740(0000) GS:ffff9d7aeb1c0000(0000) knlGS:0000000000000000
[   89.325328] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[   89.325629] CR2: 00007f0af52e96c0 CR3: 0000000002a02006 CR4: 0000000000770ee0
[   89.326004] PKRU: 55555554
[   89.326161] Call Trace:
[   89.326298]  <TASK>
[   89.326419]  __sock_release+0xb5/0xc0
[   89.326632]  __sys_socket_file+0xb2/0xd0
[   89.326844]  io_socket+0x88/0x100
[   89.327039]  ? io_issue_sqe+0x6a/0x430
[   89.327258]  io_issue_sqe+0x67/0x430
[   89.327450]  io_submit_sqes+0x1fe/0x670
[   89.327661]  io_sq_thread+0x2e6/0x530
[   89.327859]  ? __pfx_autoremove_wake_function+0x10/0x10
[   89.328145]  ? __pfx_io_sq_thread+0x10/0x10
[   89.328367]  ret_from_fork+0x29/0x50
[   89.328576] RIP: 0033:0x0
[   89.328732] Code: Unable to access opcode bytes at 0xffffffffffffffd6.
[   89.329073] RSP: 002b:0000000000000000 EFLAGS: 00000202 ORIG_RAX: 00000000000001a9
[   89.329477] RAX: 0000000000000000 RBX: 0000000000000000 RCX: 00007f7b28637a3d
[   89.329845] RDX: 00007fff4e4318a8 RSI: 00007fff4e4318b0 RDI: 0000000000000400
[   89.330216] RBP: 00007fff4e431830 R08: 00007fff4e431711 R09: 00007fff4e4318b0
[   89.330584] R10: 0000000000000000 R11: 0000000000000202 R12: 00007fff4e441b38
[   89.330950] R13: 0000563835e3e725 R14: 0000563835e40d10 R15: 00007f7b28784040
[   89.331318]  </TASK>
[   89.331441] Modules linked in:
[   89.331617] ---[ end trace 0000000000000000 ]---

Fixes: da214a4 ("net: add __sys_socket_file()")
Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@canonical.com>
Reviewed-by: Jens Axboe <axboe@kernel.dk>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Reviewed-by: Kuniyuki Iwashima <kuniyu@amazon.com>
Link: https://lore.kernel.org/r/20230307173707.468744-1-cascardo@canonical.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
jenkins-tessares pushed a commit that referenced this issue Nov 17, 2023
Enable the cpu v4 tests for LoongArch. Currently, we don't have BPF
trampoline in LoongArch JIT, so the fentry test `test_ptr_struct_arg`
still failed, will followup.

Test result attached below:

  # ./test_progs -t verifier_sdiv,verifier_movsx,verifier_ldsx,verifier_gotol,verifier_bswap
  #316/1   verifier_bswap/BSWAP, 16:OK
  #316/2   verifier_bswap/BSWAP, 16 @unpriv:OK
  #316/3   verifier_bswap/BSWAP, 32:OK
  #316/4   verifier_bswap/BSWAP, 32 @unpriv:OK
  #316/5   verifier_bswap/BSWAP, 64:OK
  #316/6   verifier_bswap/BSWAP, 64 @unpriv:OK
  #316     verifier_bswap:OK
  #330/1   verifier_gotol/gotol, small_imm:OK
  #330/2   verifier_gotol/gotol, small_imm @unpriv:OK
  #330     verifier_gotol:OK
  #338/1   verifier_ldsx/LDSX, S8:OK
  #338/2   verifier_ldsx/LDSX, S8 @unpriv:OK
  #338/3   verifier_ldsx/LDSX, S16:OK
  #338/4   verifier_ldsx/LDSX, S16 @unpriv:OK
  #338/5   verifier_ldsx/LDSX, S32:OK
  #338/6   verifier_ldsx/LDSX, S32 @unpriv:OK
  #338/7   verifier_ldsx/LDSX, S8 range checking, privileged:OK
  #338/8   verifier_ldsx/LDSX, S16 range checking:OK
  #338/9   verifier_ldsx/LDSX, S16 range checking @unpriv:OK
  #338/10  verifier_ldsx/LDSX, S32 range checking:OK
  #338/11  verifier_ldsx/LDSX, S32 range checking @unpriv:OK
  #338     verifier_ldsx:OK
  #349/1   verifier_movsx/MOV32SX, S8:OK
  #349/2   verifier_movsx/MOV32SX, S8 @unpriv:OK
  #349/3   verifier_movsx/MOV32SX, S16:OK
  #349/4   verifier_movsx/MOV32SX, S16 @unpriv:OK
  #349/5   verifier_movsx/MOV64SX, S8:OK
  #349/6   verifier_movsx/MOV64SX, S8 @unpriv:OK
  #349/7   verifier_movsx/MOV64SX, S16:OK
  #349/8   verifier_movsx/MOV64SX, S16 @unpriv:OK
  #349/9   verifier_movsx/MOV64SX, S32:OK
  #349/10  verifier_movsx/MOV64SX, S32 @unpriv:OK
  #349/11  verifier_movsx/MOV32SX, S8, range_check:OK
  #349/12  verifier_movsx/MOV32SX, S8, range_check @unpriv:OK
  #349/13  verifier_movsx/MOV32SX, S16, range_check:OK
  #349/14  verifier_movsx/MOV32SX, S16, range_check @unpriv:OK
  #349/15  verifier_movsx/MOV32SX, S16, range_check 2:OK
  #349/16  verifier_movsx/MOV32SX, S16, range_check 2 @unpriv:OK
  #349/17  verifier_movsx/MOV64SX, S8, range_check:OK
  #349/18  verifier_movsx/MOV64SX, S8, range_check @unpriv:OK
  #349/19  verifier_movsx/MOV64SX, S16, range_check:OK
  #349/20  verifier_movsx/MOV64SX, S16, range_check @unpriv:OK
  #349/21  verifier_movsx/MOV64SX, S32, range_check:OK
  #349/22  verifier_movsx/MOV64SX, S32, range_check @unpriv:OK
  #349/23  verifier_movsx/MOV64SX, S16, R10 Sign Extension:OK
  #349/24  verifier_movsx/MOV64SX, S16, R10 Sign Extension @unpriv:OK
  #349     verifier_movsx:OK
  #361/1   verifier_sdiv/SDIV32, non-zero imm divisor, check 1:OK
  #361/2   verifier_sdiv/SDIV32, non-zero imm divisor, check 1 @unpriv:OK
  #361/3   verifier_sdiv/SDIV32, non-zero imm divisor, check 2:OK
  #361/4   verifier_sdiv/SDIV32, non-zero imm divisor, check 2 @unpriv:OK
  #361/5   verifier_sdiv/SDIV32, non-zero imm divisor, check 3:OK
  #361/6   verifier_sdiv/SDIV32, non-zero imm divisor, check 3 @unpriv:OK
  #361/7   verifier_sdiv/SDIV32, non-zero imm divisor, check 4:OK
  #361/8   verifier_sdiv/SDIV32, non-zero imm divisor, check 4 @unpriv:OK
  #361/9   verifier_sdiv/SDIV32, non-zero imm divisor, check 5:OK
  #361/10  verifier_sdiv/SDIV32, non-zero imm divisor, check 5 @unpriv:OK
  #361/11  verifier_sdiv/SDIV32, non-zero imm divisor, check 6:OK
  #361/12  verifier_sdiv/SDIV32, non-zero imm divisor, check 6 @unpriv:OK
  #361/13  verifier_sdiv/SDIV32, non-zero imm divisor, check 7:OK
  #361/14  verifier_sdiv/SDIV32, non-zero imm divisor, check 7 @unpriv:OK
  #361/15  verifier_sdiv/SDIV32, non-zero imm divisor, check 8:OK
  #361/16  verifier_sdiv/SDIV32, non-zero imm divisor, check 8 @unpriv:OK
  #361/17  verifier_sdiv/SDIV32, non-zero reg divisor, check 1:OK
  #361/18  verifier_sdiv/SDIV32, non-zero reg divisor, check 1 @unpriv:OK
  #361/19  verifier_sdiv/SDIV32, non-zero reg divisor, check 2:OK
  #361/20  verifier_sdiv/SDIV32, non-zero reg divisor, check 2 @unpriv:OK
  #361/21  verifier_sdiv/SDIV32, non-zero reg divisor, check 3:OK
  #361/22  verifier_sdiv/SDIV32, non-zero reg divisor, check 3 @unpriv:OK
  #361/23  verifier_sdiv/SDIV32, non-zero reg divisor, check 4:OK
  #361/24  verifier_sdiv/SDIV32, non-zero reg divisor, check 4 @unpriv:OK
  #361/25  verifier_sdiv/SDIV32, non-zero reg divisor, check 5:OK
  #361/26  verifier_sdiv/SDIV32, non-zero reg divisor, check 5 @unpriv:OK
  #361/27  verifier_sdiv/SDIV32, non-zero reg divisor, check 6:OK
  #361/28  verifier_sdiv/SDIV32, non-zero reg divisor, check 6 @unpriv:OK
  #361/29  verifier_sdiv/SDIV32, non-zero reg divisor, check 7:OK
  #361/30  verifier_sdiv/SDIV32, non-zero reg divisor, check 7 @unpriv:OK
  #361/31  verifier_sdiv/SDIV32, non-zero reg divisor, check 8:OK
  #361/32  verifier_sdiv/SDIV32, non-zero reg divisor, check 8 @unpriv:OK
  #361/33  verifier_sdiv/SDIV64, non-zero imm divisor, check 1:OK
  #361/34  verifier_sdiv/SDIV64, non-zero imm divisor, check 1 @unpriv:OK
  #361/35  verifier_sdiv/SDIV64, non-zero imm divisor, check 2:OK
  #361/36  verifier_sdiv/SDIV64, non-zero imm divisor, check 2 @unpriv:OK
  #361/37  verifier_sdiv/SDIV64, non-zero imm divisor, check 3:OK
  #361/38  verifier_sdiv/SDIV64, non-zero imm divisor, check 3 @unpriv:OK
  #361/39  verifier_sdiv/SDIV64, non-zero imm divisor, check 4:OK
  #361/40  verifier_sdiv/SDIV64, non-zero imm divisor, check 4 @unpriv:OK
  #361/41  verifier_sdiv/SDIV64, non-zero imm divisor, check 5:OK
  #361/42  verifier_sdiv/SDIV64, non-zero imm divisor, check 5 @unpriv:OK
  #361/43  verifier_sdiv/SDIV64, non-zero imm divisor, check 6:OK
  #361/44  verifier_sdiv/SDIV64, non-zero imm divisor, check 6 @unpriv:OK
  #361/45  verifier_sdiv/SDIV64, non-zero reg divisor, check 1:OK
  #361/46  verifier_sdiv/SDIV64, non-zero reg divisor, check 1 @unpriv:OK
  #361/47  verifier_sdiv/SDIV64, non-zero reg divisor, check 2:OK
  #361/48  verifier_sdiv/SDIV64, non-zero reg divisor, check 2 @unpriv:OK
  #361/49  verifier_sdiv/SDIV64, non-zero reg divisor, check 3:OK
  #361/50  verifier_sdiv/SDIV64, non-zero reg divisor, check 3 @unpriv:OK
  #361/51  verifier_sdiv/SDIV64, non-zero reg divisor, check 4:OK
  #361/52  verifier_sdiv/SDIV64, non-zero reg divisor, check 4 @unpriv:OK
  #361/53  verifier_sdiv/SDIV64, non-zero reg divisor, check 5:OK
  #361/54  verifier_sdiv/SDIV64, non-zero reg divisor, check 5 @unpriv:OK
  #361/55  verifier_sdiv/SDIV64, non-zero reg divisor, check 6:OK
  #361/56  verifier_sdiv/SDIV64, non-zero reg divisor, check 6 @unpriv:OK
  #361/57  verifier_sdiv/SMOD32, non-zero imm divisor, check 1:OK
  #361/58  verifier_sdiv/SMOD32, non-zero imm divisor, check 1 @unpriv:OK
  #361/59  verifier_sdiv/SMOD32, non-zero imm divisor, check 2:OK
  #361/60  verifier_sdiv/SMOD32, non-zero imm divisor, check 2 @unpriv:OK
  #361/61  verifier_sdiv/SMOD32, non-zero imm divisor, check 3:OK
  #361/62  verifier_sdiv/SMOD32, non-zero imm divisor, check 3 @unpriv:OK
  #361/63  verifier_sdiv/SMOD32, non-zero imm divisor, check 4:OK
  #361/64  verifier_sdiv/SMOD32, non-zero imm divisor, check 4 @unpriv:OK
  #361/65  verifier_sdiv/SMOD32, non-zero imm divisor, check 5:OK
  #361/66  verifier_sdiv/SMOD32, non-zero imm divisor, check 5 @unpriv:OK
  #361/67  verifier_sdiv/SMOD32, non-zero imm divisor, check 6:OK
  #361/68  verifier_sdiv/SMOD32, non-zero imm divisor, check 6 @unpriv:OK
  #361/69  verifier_sdiv/SMOD32, non-zero reg divisor, check 1:OK
  #361/70  verifier_sdiv/SMOD32, non-zero reg divisor, check 1 @unpriv:OK
  #361/71  verifier_sdiv/SMOD32, non-zero reg divisor, check 2:OK
  #361/72  verifier_sdiv/SMOD32, non-zero reg divisor, check 2 @unpriv:OK
  #361/73  verifier_sdiv/SMOD32, non-zero reg divisor, check 3:OK
  #361/74  verifier_sdiv/SMOD32, non-zero reg divisor, check 3 @unpriv:OK
  #361/75  verifier_sdiv/SMOD32, non-zero reg divisor, check 4:OK
  #361/76  verifier_sdiv/SMOD32, non-zero reg divisor, check 4 @unpriv:OK
  #361/77  verifier_sdiv/SMOD32, non-zero reg divisor, check 5:OK
  #361/78  verifier_sdiv/SMOD32, non-zero reg divisor, check 5 @unpriv:OK
  #361/79  verifier_sdiv/SMOD32, non-zero reg divisor, check 6:OK
  #361/80  verifier_sdiv/SMOD32, non-zero reg divisor, check 6 @unpriv:OK
  #361/81  verifier_sdiv/SMOD64, non-zero imm divisor, check 1:OK
  #361/82  verifier_sdiv/SMOD64, non-zero imm divisor, check 1 @unpriv:OK
  #361/83  verifier_sdiv/SMOD64, non-zero imm divisor, check 2:OK
  #361/84  verifier_sdiv/SMOD64, non-zero imm divisor, check 2 @unpriv:OK
  #361/85  verifier_sdiv/SMOD64, non-zero imm divisor, check 3:OK
  #361/86  verifier_sdiv/SMOD64, non-zero imm divisor, check 3 @unpriv:OK
  #361/87  verifier_sdiv/SMOD64, non-zero imm divisor, check 4:OK
  #361/88  verifier_sdiv/SMOD64, non-zero imm divisor, check 4 @unpriv:OK
  #361/89  verifier_sdiv/SMOD64, non-zero imm divisor, check 5:OK
  #361/90  verifier_sdiv/SMOD64, non-zero imm divisor, check 5 @unpriv:OK
  #361/91  verifier_sdiv/SMOD64, non-zero imm divisor, check 6:OK
  #361/92  verifier_sdiv/SMOD64, non-zero imm divisor, check 6 @unpriv:OK
  #361/93  verifier_sdiv/SMOD64, non-zero imm divisor, check 7:OK
  #361/94  verifier_sdiv/SMOD64, non-zero imm divisor, check 7 @unpriv:OK
  #361/95  verifier_sdiv/SMOD64, non-zero imm divisor, check 8:OK
  #361/96  verifier_sdiv/SMOD64, non-zero imm divisor, check 8 @unpriv:OK
  #361/97  verifier_sdiv/SMOD64, non-zero reg divisor, check 1:OK
  #361/98  verifier_sdiv/SMOD64, non-zero reg divisor, check 1 @unpriv:OK
  #361/99  verifier_sdiv/SMOD64, non-zero reg divisor, check 2:OK
  #361/100 verifier_sdiv/SMOD64, non-zero reg divisor, check 2 @unpriv:OK
  #361/101 verifier_sdiv/SMOD64, non-zero reg divisor, check 3:OK
  #361/102 verifier_sdiv/SMOD64, non-zero reg divisor, check 3 @unpriv:OK
  #361/103 verifier_sdiv/SMOD64, non-zero reg divisor, check 4:OK
  #361/104 verifier_sdiv/SMOD64, non-zero reg divisor, check 4 @unpriv:OK
  #361/105 verifier_sdiv/SMOD64, non-zero reg divisor, check 5:OK
  #361/106 verifier_sdiv/SMOD64, non-zero reg divisor, check 5 @unpriv:OK
  #361/107 verifier_sdiv/SMOD64, non-zero reg divisor, check 6:OK
  #361/108 verifier_sdiv/SMOD64, non-zero reg divisor, check 6 @unpriv:OK
  #361/109 verifier_sdiv/SMOD64, non-zero reg divisor, check 7:OK
  #361/110 verifier_sdiv/SMOD64, non-zero reg divisor, check 7 @unpriv:OK
  #361/111 verifier_sdiv/SMOD64, non-zero reg divisor, check 8:OK
  #361/112 verifier_sdiv/SMOD64, non-zero reg divisor, check 8 @unpriv:OK
  #361/113 verifier_sdiv/SDIV32, zero divisor:OK
  #361/114 verifier_sdiv/SDIV32, zero divisor @unpriv:OK
  #361/115 verifier_sdiv/SDIV64, zero divisor:OK
  #361/116 verifier_sdiv/SDIV64, zero divisor @unpriv:OK
  #361/117 verifier_sdiv/SMOD32, zero divisor:OK
  #361/118 verifier_sdiv/SMOD32, zero divisor @unpriv:OK
  #361/119 verifier_sdiv/SMOD64, zero divisor:OK
  #361/120 verifier_sdiv/SMOD64, zero divisor @unpriv:OK
  #361     verifier_sdiv:OK
  Summary: 5/163 PASSED, 0 SKIPPED, 0 FAILED

  # ./test_progs -t ldsx_insn
  test_map_val_and_probed_memory:PASS:test_ldsx_insn__open 0 nsec
  test_map_val_and_probed_memory:PASS:test_ldsx_insn__load 0 nsec
  libbpf: prog 'test_ptr_struct_arg': failed to attach: ERROR: strerror_r(-524)=22
  libbpf: prog 'test_ptr_struct_arg': failed to auto-attach: -524
  test_map_val_and_probed_memory:FAIL:test_ldsx_insn__attach unexpected error: -524 (errno 524)
  #116/1   ldsx_insn/map_val and probed_memory:FAIL
  #116/2   ldsx_insn/ctx_member_sign_ext:OK
  #116/3   ldsx_insn/ctx_member_narrow_sign_ext:OK
  #116     ldsx_insn:FAIL

  All error logs:
  test_map_val_and_probed_memory:PASS:test_ldsx_insn__open 0 nsec
  test_map_val_and_probed_memory:PASS:test_ldsx_insn__load 0 nsec
  libbpf: prog 'test_ptr_struct_arg': failed to attach: ERROR: strerror_r(-524)=22
  libbpf: prog 'test_ptr_struct_arg': failed to auto-attach: -524
  test_map_val_and_probed_memory:FAIL:test_ldsx_insn__attach unexpected error: -524 (errno 524)
  #116/1   ldsx_insn/map_val and probed_memory:FAIL
  #116     ldsx_insn:FAIL
  Summary: 0/2 PASSED, 0 SKIPPED, 1 FAILED

Signed-off-by: Hengqi Chen <hengqi.chen@gmail.com>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant