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

ip mptcp monitor reports: [SF_CLOSED] error=111 #338

Closed
dmytroshytyi-6WIND opened this issue Jan 17, 2023 · 9 comments
Closed

ip mptcp monitor reports: [SF_CLOSED] error=111 #338

dmytroshytyi-6WIND opened this issue Jan 17, 2023 · 9 comments

Comments

@dmytroshytyi-6WIND
Copy link

Hello,

I'im curious what I'm missing in this setup, such that I observe an interesting behavior of sublflow [SF_CLOSED] error=111

I'm runing the next kernel:

Linux debian 6.2.0-rc3-g02e586

IPERF is using IPPROTO_MPTCP.

Testbed setup:

sysctl -w net.ipv4.conf.all.rp_filter=0
ip netns exec ns1 sysctl -w net.ipv4.conf.all.rp_filter=0
ip netns exec ns2 sysctl -w net.ipv4.conf.all.rp_filter=0
ip netns add ns1
ip netns add ns2

ip link add dev veth1 type veth peer name veth2
ip link set veth1 netns ns1
ip link set veth2 netns ns2
ip netns exec ns1 ip link set veth1 up
ip netns exec ns2 ip link set veth2 up

ip link add dev veth3 type veth peer name veth4
ip link set veth3 netns ns1
ip link set veth4 netns ns2
ip netns exec ns1 ip link set veth3 up
ip netns exec ns2 ip link set veth4 up

ip netns exec ns1 ip addr add 10.1.1.1/24 dev veth1
ip netns exec ns2 ip addr add 10.1.1.2/24 dev veth2

ip netns exec ns1 ip addr add 10.2.2.1/24 dev veth3
ip netns exec ns2 ip addr add 10.2.2.2/24 dev veth4

sysctl -w net.mptcp.enabled=1
ip netns exec ns1 sysctl -w net.mptcp.enabled=1
ip netns exec ns2 sysctl -w net.mptcp.enabled=1

ip netns exec ns1 ip mptcp limits set subflow 4 add_addr_accepted 4
ip netns exec ns2 ip mptcp limits set subflow 4 add_addr_accepted 4

ip netns exec ns1 ip mptcp endpoint add 10.1.1.1 singal
ip netns exec ns1 ip mptcp endpoint add 10.2.2.1 subflow

ip netns exec ns2 ip mptcp endpoint add 10.1.1.2 subflow
ip netns exec ns2 ip mptcp endpoint add 10.2.2.2 subflow

ip netns exec ns1 ip mptcp endpoint change id 1 fullmesh
ip netns exec ns1 ip mptcp endpoint change id 2 fullmesh

ip netns exec ns2 ip mptcp endpoint change id 1 fullmesh
ip netns exec ns2 ip mptcp endpoint change id 2 fullmesh

here is a result of:

ip netns exec ns2 ip mptcp monitor
[         CREATED] token=8b48782d remid=0 locid=0 saddr4=10.1.1.2 daddr4=10.1.1.1 sport=5201 dport=34172
[     ESTABLISHED] token=8b48782d remid=0 locid=0 saddr4=10.1.1.2 daddr4=10.1.1.1 sport=5201 dport=34172
[       SF_CLOSED] token=8b48782d remid=0 locid=2 saddr4=10.2.2.2 daddr4=10.1.1.1 sport=54459 dport=34172 backup=0 error=111
[  SF_ESTABLISHED] token=8b48782d remid=1 locid=0 saddr4=10.1.1.2 daddr4=10.2.2.1 sport=5201 dport=36341 backup=0

tcpdump packet trace:

root@debian:~# tcpdump -r tcpdump.out
reading from file tcpdump.out, link-type EN10MB (Ethernet), snapshot length 262144
17:14:39.184427 IP 10.1.1.1.33698 > 10.1.1.2.5201: Flags [S], seq 3162591244, win 64240, options [mss 1460,sackOK,TS val 4156713656 ecr 0,nop,wscale 7,mptcp capable v1], length 0
17:14:39.184719 IP 10.1.1.2.5201 > 10.1.1.1.33698: Flags [S.], seq 883817254, ack 3162591245, win 65160, options [mss 1460,sackOK,TS val 1055423805 ecr 4156713656,nop,wscale 7,mptcp capable v1 {0x5bf4dbf627bfd69b}], length 0
17:14:39.184961 IP 10.1.1.1.33698 > 10.1.1.2.5201: Flags [.], ack 1, win 502, options [nop,nop,TS val 4156713657 ecr 1055423805,mptcp capable v1 {0x22fc33ed9d78b9e7,0x5bf4dbf627bfd69b}], length 0
17:14:39.185878 IP 10.1.1.1.33698 > 10.1.1.2.5201: Flags [P.], seq 1:38, ack 1, win 502, options [nop,nop,TS val 4156713658 ecr 1055423805,mptcp capable v1 {0x22fc33ed9d78b9e7,0x5bf4dbf627bfd69b},nop,nop], length 37
17:14:39.187947 IP 10.2.2.2.45295 > 10.1.1.1.33698: Flags [S], seq 2615335073, win 64240, options [mss 1460,sackOK,TS val 1392569733 ecr 0,nop,wscale 7,mptcp join id 2 token 0x400b22a3 nonce 0xf61b5a0d], length 0
17:14:39.188037 IP 10.1.1.2.5201 > 10.1.1.1.33698: Flags [.], ack 38, win 509, options [nop,nop,TS val 1055423808 ecr 4156713658,mptcp dss ack 4896219234535800030], length 0
17:14:39.188773 IP 10.2.2.1.50129 > 10.1.1.2.5201: Flags [S], seq 3149764674, win 64256, options [mss 1460,sackOK,TS val 806476618 ecr 0,nop,wscale 7,mptcp join id 1 token 0x85607bdd nonce 0x83d85447], length 0
17:14:39.192757 IP 10.2.2.1.50129 > 10.1.1.2.5201: Flags [.], ack 4202612640, win 502, options [nop,nop,TS val 806476622 ecr 1101702215,mptcp join hmac 0xf94748cc0415dade7dceafc5a973dc83b9a52b6c], length 0
17:14:39.192819 IP 10.1.1.2.5201 > 10.1.1.1.33698: Flags [P.], seq 1:2, ack 38, win 509, options [nop,nop,TS val 1055423813 ecr 4156713658,mptcp dss ack 4896219234535800030 seq 16737065810017587888 subseq 1 len 1,nop,nop], length 1
17:14:39.192992 IP 10.1.1.1.33698 > 10.1.1.2.5201: Flags [.], ack 2, win 502, options [nop,nop,TS val 4156713665 ecr 1055423813,mptcp dss ack 16737065810017587889], length 0
17:14:39.198951 IP 10.1.1.1.33698 > 10.1.1.2.5201: Flags [P.], seq 38:42, ack 2, win 502, options [nop,nop,TS val 4156713671 ecr 1055423813,mptcp dss ack 16737065810017587889 seq 4896219234535800030 subseq 38 len 4,nop,nop], length 4
17:14:39.199426 IP 10.2.2.1.50129 > 10.1.1.2.5201: Flags [P.], seq 0:124, ack 1, win 502, options [nop,nop,TS val 806476629 ecr 1101702220,mptcp dss ack 16737065810017587889 seq 4896219234535800034 subseq 1 len 124,nop,nop], length 124
17:14:39.199823 IP 10.1.1.2.5201 > 10.1.1.1.33698: Flags [P.], seq 2:3, ack 42, win 510, options [nop,nop,TS val 1055423820 ecr 4156713671,mptcp dss ack 4896219234535800158 seq 16737065810017587889 subseq 2 len 1,nop,nop], length 1
17:14:39.208379 IP 10.1.1.1.33710 > 10.1.1.2.5201: Flags [S], seq 2806776094, win 64240, options [mss 1460,sackOK,TS val 4156713681 ecr 0,nop,wscale 7,mptcp capable v1], length 0
17:14:39.208616 IP 10.1.1.2.5201 > 10.1.1.1.33710: Flags [S.], seq 1795498117, ack 2806776095, win 65160, options [mss 1460,sackOK,TS val 1055423829 ecr 4156713681,nop,wscale 7,mptcp capable v1 {0x9eec1592a7217a8}], length 0
17:14:39.208825 IP 10.1.1.1.33710 > 10.1.1.2.5201: Flags [.], ack 1, win 502, options [nop,nop,TS val 4156713681 ecr 1055423829,mptcp capable v1 {0x2cc8e25a5c6d217f,0x9eec1592a7217a8}], length 0
17:14:39.209519 IP 10.1.1.1.33710 > 10.1.1.2.5201: Flags [P.], seq 1:38, ack 1, win 502, options [nop,nop,TS val 4156713682 ecr 1055423829,mptcp capable v1 {0x2cc8e25a5c6d217f,0x9eec1592a7217a8},nop,nop], length 37
17:14:39.209601 IP 10.1.1.2.5201 > 10.1.1.1.33710: Flags [.], ack 38, win 509, options [nop,nop,TS val 1055423830 ecr 4156713682,mptcp dss ack 15089186376620249533], length 0
17:14:39.210653 IP 10.2.2.1.45143 > 10.1.1.2.5201: Flags [S], seq 160553466, win 64256, options [mss 1460,sackOK,TS val 806476640 ecr 0,nop,wscale 7,mptcp join id 1 token 0x49260942 nonce 0xde1d403b], length 0
17:14:39.211445 IP 10.2.2.2.60225 > 10.1.1.1.33710: Flags [S], seq 1520265331, win 65152, options [mss 1460,sackOK,TS val 1392569757 ecr 0,nop,wscale 7,mptcp join id 2 token 0xb0f82e5b nonce 0xa2cc8d43], length 0
17:14:39.213483 IP 10.2.2.1.45143 > 10.1.1.2.5201: Flags [.], ack 2993543056, win 502, options [nop,nop,TS val 806476642 ecr 1101702238,mptcp join hmac 0x363b5e1643ed79ffe4553683201dad342222bc62], length 0
17:14:39.224925 IP 10.2.2.1.50129 > 10.1.1.2.5201: Flags [.], ack 2, win 502, options [nop,nop,TS val 806476654 ecr 1101702251,mptcp dss ack 16737065810017587891], length 0
17:14:39.225378 IP 10.2.2.1.50129 > 10.1.1.2.5201: Flags [.], ack 3, win 502, options [nop,nop,TS val 806476655 ecr 1101702252,mptcp dss ack 16737065810017587892], length 0
17:14:39.229630 IP 10.1.1.1.33710 > 10.1.1.2.5201: Flags [P.], seq 38:7158, ack 1, win 502, options [nop,nop,TS val 4156713702 ecr 1055423830,mptcp dss ack 3409098701 seq 15089186376620249533 subseq 38 len 31328,nop,nop], length 7120
17:14:39.229851 IP 10.1.1.2.5201 > 10.1.1.1.33710: Flags [.], ack 7158, win 480, options [nop,nop,TS val 1055423850 ecr 4156713702,mptcp dss ack 15089186376620256653], length 0
17:14:39.230004 IP 10.1.1.1.33710 > 10.1.1.2.5201: Flags [P.], seq 7158:14278, ack 1, win 502, options [nop,nop,TS val 4156713702 ecr 1055423830,mptcp dss ack 3409098701 seq 15089186376620249533 subseq 38 len 31328,nop,nop], length 7120
17:14:39.230244 IP 10.1.1.2.5201 > 10.1.1.1.33710: Flags [.], ack 14278, win 447, options [nop,nop,TS val 1055423851 ecr 4156713702,mptcp dss ack 15089186376620263773], length 0
17:14:39.230398 IP 10.1.1.1.33710 > 10.1.1.2.5201: Flags [P.], seq 14278:24246, ack 1, win 502, options [nop,nop,TS val 4156713703 ecr 1055423850,mptcp dss ack 3409098701 seq 15089186376620249533 subseq 38 len 31328,nop,nop], length 9968
17:14:39.230467 IP 10.1.1.2.5201 > 10.1.1.1.33710: Flags [.], ack 24246, win 469, options [nop,nop,TS val 1055423851 ecr 4156713703,mptcp dss ack 15089186376620273741], length 0
17:14:39.230570 IP 10.1.1.1.33710 > 10.1.1.2.5201: Flags [P.], seq 24246:31366, ack 1, win 502, options [nop,nop,TS val 4156713703 ecr 1055423851,mptcp dss ack 3409098701 seq 15089186376620249533 subseq 38 len 31328,nop,nop], length 7120
17:14:39.230604 IP 10.1.1.2.5201 > 10.1.1.1.33710: Flags [.], ack 31366, win 480, options [nop,nop,TS val 1055423851 ecr 4156713703,mptcp dss ack 15089186376620280861], length 0
17:14:39.230646 IP 10.1.1.1.33710 > 10.1.1.2.5201: Flags [P.], seq 31366:32766, ack 1, win 502, options [nop,nop,TS val 4156713703 ecr 1055423851,mptcp dss ack 3409098701 seq 15089186376620280861 subseq 31366 len 1400,nop,nop], length 1400
17:14:39.230685 IP 10.1.1.2.5201 > 10.1.1.1.33710: Flags [.], ack 32766, win 501, options [nop,nop,TS val 1055423851 ecr 4156713703,mptcp dss ack 15089186376620282261], length 0
17:14:39.231251 IP 10.1.1.1.33710 > 10.1.1.2.5201: Flags [P.], seq 32766:55550, ack 1, win 502, options [nop,nop,TS val 4156713703 ecr 1055423851,mptcp dss ack 3409098701 seq 15089186376620282261 subseq 32766 len 31328,nop,nop], length 22784
17:14:39.231380 IP 10.1.1.2.5201 > 10.1.1.1.33710: Flags [.], ack 55550, win 418, options [nop,nop,TS val 1055423852 ecr 4156713703,mptcp dss ack 15089186376620305045], length 0

Thanks!

@pabeni
Copy link

pabeni commented Jan 17, 2023

please additionally report even the command used to run the server and the client.

@dmytroshytyi-6WIND
Copy link
Author

Please find the command used to run the server and client:

strace -o strace.serve -f ip netns exec ns2 iperf3 -s -B 0.0.0.0 > /dev/null &

root@debian:~# cat strace.serve | grep socket
541   socket(AF_NETLINK, SOCK_RAW|SOCK_CLOEXEC, NETLINK_ROUTE) = 3
541   socket(AF_NETLINK, SOCK_RAW|SOCK_CLOEXEC, NETLINK_ROUTE) = 4
541   socket(AF_INET, SOCK_STREAM, IPPROTO_MPTCP) = 3
541   socket(AF_INET, SOCK_STREAM, IPPROTO_MPTCP) = 3

strace -o strace.client -f ip netns exec ns1 iperf3 -c 10.1.1.2 -t 1 > /dev/null &

root@debian:~# cat strace.client | grep socket
515   socket(AF_NETLINK, SOCK_RAW|SOCK_CLOEXEC, NETLINK_ROUTE) = 3
515   socket(AF_NETLINK, SOCK_RAW|SOCK_CLOEXEC, NETLINK_ROUTE) = 4
515   socket(AF_INET, SOCK_STREAM, IPPROTO_MPTCP) = 4
515   socket(AF_INET, SOCK_STREAM, IPPROTO_MPTCP) = 5

@pabeni
Copy link

pabeni commented Jan 17, 2023

ip netns exec ns1 ip mptcp endpoint add 10.1.1.1 singal

The above endpoint configuration is wrong (beyond the typo): ns1 is the 'client' namespace, a signal endpoint will work only in presence of a port (and will be quite an unusual setup)

ip netns exec ns1 ip mptcp endpoint add 10.2.2.1 subflow

ip netns exec ns2 ip mptcp endpoint add 10.1.1.2 subflow
ip netns exec ns2 ip mptcp endpoint add 10.2.2.2 subflow

The above endpoints configuration is wrong: ns2 is the server namespace, the 'subflow' flags means the server will try to connect back to the client address/port (and will find a closed port)

ip netns exec ns1 ip mptcp endpoint change id 1 fullmesh
ip netns exec ns1 ip mptcp endpoint change id 2 fullmesh

it would be better/simpler to add all the endpoint flags with a single command, at least for valid endpoint

[...]

[ SF_CLOSED] token=8b48782d remid=0 locid=2 saddr4=10.2.2.2 daddr4=10.1.1.1 sport=54459 dport=34172 backup=0 error=111

This is the server connecting back to the client, receiving a ECONNREFUSED error, as expected

[ SF_ESTABLISHED] token=8b48782d remid=1 locid=0 saddr4=10.1.1.2 daddr4=10.2.2.1 sport=5201 dport=36341 backup=0


tcpdump packet trace:

root@debian:~# tcpdump -r tcpdump.out
reading from file tcpdump.out, link-type EN10MB (Ethernet), snapshot length 262144

[...]

it looks like there has been some packet drop, as the pcap traces does not contain the TCP reset causing the ECONNREFUSED above.

@dmytroshytyi-6WIND
Copy link
Author

Thanks, @pabeni

jenkins-tessares pushed a commit that referenced this issue Feb 18, 2023
Currently amdgpu calls drm_sched_fini() from the fence driver sw fini
routine - such function is expected to be called only after the
respective init function - drm_sched_init() - was executed successfully.

Happens that we faced a driver probe failure in the Steam Deck
recently, and the function drm_sched_fini() was called even without
its counter-part had been previously called, causing the following oops:

amdgpu: probe of 0000:04:00.0 failed with error -110
BUG: kernel NULL pointer dereference, address: 0000000000000090
PGD 0 P4D 0
Oops: 0002 [#1] PREEMPT SMP NOPTI
CPU: 0 PID: 609 Comm: systemd-udevd Not tainted 6.2.0-rc3-gpiccoli #338
Hardware name: Valve Jupiter/Jupiter, BIOS F7A0113 11/04/2022
RIP: 0010:drm_sched_fini+0x84/0xa0 [gpu_sched]
[...]
Call Trace:
 <TASK>
 amdgpu_fence_driver_sw_fini+0xc8/0xd0 [amdgpu]
 amdgpu_device_fini_sw+0x2b/0x3b0 [amdgpu]
 amdgpu_driver_release_kms+0x16/0x30 [amdgpu]
 devm_drm_dev_init_release+0x49/0x70
 [...]

To prevent that, check if the drm_sched was properly initialized for a
given ring before calling its fini counter-part.

Notice ideally we'd use sched.ready for that; such field is set as the latest
thing on drm_sched_init(). But amdgpu seems to "override" the meaning of such
field - in the above oops for example, it was a GFX ring causing the crash, and
the sched.ready field was set to true in the ring init routine, regardless of
the state of the DRM scheduler. Hence, we ended-up using sched.ops as per
Christian's suggestion [0], and also removed the no_scheduler check [1].

[0] https://lore.kernel.org/amd-gfx/[email protected]/
[1] https://lore.kernel.org/amd-gfx/[email protected]/

Fixes: 067f44c ("drm/amdgpu: avoid over-handle of fence driver fini in s3 test (v2)")
Suggested-by: Christian König <[email protected]>
Cc: Guchun Chen <[email protected]>
Cc: Luben Tuikov <[email protected]>
Cc: Mario Limonciello <[email protected]>
Reviewed-by: Luben Tuikov <[email protected]>
Signed-off-by: Guilherme G. Piccoli <[email protected]>
Signed-off-by: Alex Deucher <[email protected]>
Cc: [email protected]
@AlejandraOliver
Copy link

Hi @dmytroshytyi-6WIND, could you show the final tesbed setup that you use to simulate the virtual enviroment in order to verify the correct behaviour of MPTCP?

Thanks in advance!!!

@matttbe
Copy link
Member

matttbe commented Apr 17, 2023

@AlejandraOliver if you are interested in having a development environment for MPTCP, you can have a look at this: https://github.com/multipath-tcp/mptcp-upstream-virtme-docker

@AlejandraOliver
Copy link

I want to set up a real enviroment with two machines but not a virtual enviroment like it show in https://github.com/multipath-tcp/mptcp-upstream-virtme-docker

@dmytroshytyi-6WIND
Copy link
Author

@AlejandraOliver,
The setup I provided in the topic head is intended to be run on the same machine with using of linux namespaces. Moreover it seems it need some adjustments, when talking about additional subflow establishment, as you could find an expected error.

The next might help for creating a real environment with two machines:

You might find many examples on the internet.

@AlejandraOliver
Copy link

I don't see any example of what commands I need to use to create the enviroment on the internet, or any example of a created scenario but thanks anyway, I will see.

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 <[email protected]>
Signed-off-by: Huacai Chen <[email protected]>
matttbe pushed a commit that referenced this issue Jul 10, 2024
Add a test case which replaces an active ingress qdisc while keeping the
miniq in-tact during the transition period to the new clsact qdisc.

  # ./vmtest.sh -- ./test_progs -t tc_link
  [...]
  ./test_progs -t tc_link
  [    3.412871] bpf_testmod: loading out-of-tree module taints kernel.
  [    3.413343] bpf_testmod: module verification failed: signature and/or required key missing - tainting kernel
  #332     tc_links_after:OK
  #333     tc_links_append:OK
  #334     tc_links_basic:OK
  #335     tc_links_before:OK
  #336     tc_links_chain_classic:OK
  #337     tc_links_chain_mixed:OK
  #338     tc_links_dev_chain0:OK
  #339     tc_links_dev_cleanup:OK
  #340     tc_links_dev_mixed:OK
  #341     tc_links_ingress:OK
  #342     tc_links_invalid:OK
  #343     tc_links_prepend:OK
  #344     tc_links_replace:OK
  #345     tc_links_revision:OK
  Summary: 14/0 PASSED, 0 SKIPPED, 0 FAILED

Signed-off-by: Daniel Borkmann <[email protected]>
Cc: Martin KaFai Lau <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Martin KaFai Lau <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants