<_PROGS=nft_flowtable.sh TEST_GEN_PROGS="" run_tests make: Entering directory '/srv/vmksft/testing/wt-16/tools/testing/selftests' make[1]: Entering directory '/srv/vmksft/testing/wt-16/tools/testing/selftests/net/netfilter' make[1]: Nothing to be done for 'all'. make[1]: Leaving directory '/srv/vmksft/testing/wt-16/tools/testing/selftests/net/netfilter' make[1]: Entering directory '/srv/vmksft/testing/wt-16/tools/testing/selftests/net/netfilter' # overriding timeout to 3600 # selftests: net/netfilter: nft_flowtable.sh # PASS: flow offloaded for ns1/ns2 # PASS: IPv6 flow offloaded for ns1/ns2 # PASS: dscp_none: dscp packet counters match # PASS: dscp_ingress: dscp packet counters match # PASS: dscp_egress: dscp packet counters match # PASS: dscp_fwd: dscp packet counters match # PASS: flow offload for ns1/ns2 with masquerade (pmtu disabled) # PASS: flow offload for ns1/ns2 with dnat (pmtu disabled) # PASS: dscp_ingress: dscp packet counters match # PASS: dscp_egress: dscp packet counters match # PASS: dscp_fwd: dscp packet counters match # PASS: flow offload for ns1/ns2 with masquerade # PASS: flow offload for ns1/ns2 with dnat # 2026/05/15 14:18:28 socat[27953] W exiting on signal 15 # 2026/05/15 14:18:28 socat[27958] W exiting on signal 15 # FAIL: file mismatch for ns1 -> ns2 # -rw------- 1 root root 2097152 May 15 14:17 /tmp/tmp.WVEVfzvK75 # -rw------- 1 root root 0 May 15 14:17 /tmp/tmp.uoRyIY06a6 # FAIL: file mismatch for ns1 <- ns2 # -rw------- 1 root root 2097152 May 15 14:17 /tmp/tmp.WVEVfzvK75 # -rw------- 1 root root 0 May 15 14:17 /tmp/tmp.12ilxJ8E7e # FAIL: flow offload for ns1/ns2 with dnat IPIP tunnel # FAIL: flow offload for ns1/ns2 with IPIP tunnel # table inet filter { # counter routed_orig { # packets 0 bytes 0 # } # # counter routed_repl { # packets 0 bytes 0 # } # # flowtable f1 { # hook ingress priority filter # devices = { "veth0", "veth1" } # } # # chain forward { # type filter hook forward priority filter; policy drop; # oif "veth0" tcp sport 12345 ct mark set 0x00000001 flow add @f1 counter name "routed_repl" accept # oif "tun6" accept # oif "tun0" accept # ip dscp set cs3 # ip dscp set cs3 # oif "veth1" tcp dport 12345 ct mark set 0x00000001 flow add @f1 counter name "routed_orig" accept # ct mark 0x00000001 counter name ct direction map { original : "routed_orig", reply : "routed_repl" } accept # ct state established,related accept # meta l4proto icmp accept # meta l4proto ipv6-icmp accept # } # } # table ip nat { # chain prerouting { # type nat hook prerouting priority filter; policy accept; # iif "veth0" ip daddr 10.6.6.6 tcp dport 1666 counter packets 2 bytes 120 dnat to 10.0.2.99:12345 # } # # chain postrouting { # type nat hook postrouting priority filter; policy accept; # oifname "veth1" counter packets 10 bytes 600 masquerade # } # } # 2026/05/15 14:19:28 socat[27972] W exiting on signal 15 # 2026/05/15 14:19:29 socat[27981] W exiting on signal 15 # FAIL: file mismatch for ns1 -> ns2 # -rw------- 1 root root 2097152 May 15 14:17 /tmp/tmp.WVEVfzvK75 # -rw------- 1 root root 0 May 15 14:18 /tmp/tmp.uoRyIY06a6 # FAIL: file mismatch for ns1 <- ns2 # -rw------- 1 root root 2097152 May 15 14:17 /tmp/tmp.WVEVfzvK75 # -rw------- 1 root root 0 May 15 14:18 /tmp/tmp.12ilxJ8E7e # FAIL: flow offload for ns1/ns2 with IP6IP6 tunnel # table inet filter { # counter routed_orig { # packets 0 bytes 0 # } # # counter routed_repl { # packets 0 bytes 0 # } # # flowtable f1 { # hook ingress priority filter # devices = { "veth0", "veth1" } # } # # chain forward { # type filter hook forward priority filter; policy drop; # oif "veth0" tcp sport 12345 ct mark set 0x00000001 flow add @f1 counter name "routed_repl" accept # oif "tun6" accept # oif "tun0" accept # ip dscp set cs3 # ip dscp set cs3 # oif "veth1" tcp dport 12345 ct mark set 0x00000001 flow add @f1 counter name "routed_orig" accept # ct mark 0x00000001 counter name ct direction map { original : "routed_orig", reply : "routed_repl" } accept # ct state established,related accept # meta l4proto icmp accept # meta l4proto ipv6-icmp accept # } # } # table ip nat { # chain prerouting { # type nat hook prerouting priority filter; policy accept; # iif "veth0" ip daddr 10.6.6.6 tcp dport 1666 counter packets 2 bytes 120 dnat to 10.0.2.99:12345 # } # # chain postrouting { # type nat hook postrouting priority filter; policy accept; # oifname "veth1" counter packets 10 bytes 600 masquerade # } # } # 2026/05/15 14:20:30 socat[28027] W exiting on signal 15 # 2026/05/15 14:20:30 socat[28036] W exiting on signal 15 # FAIL: file mismatch for ns1 -> ns2 # -rw------- 1 root root 2097152 May 15 14:17 /tmp/tmp.WVEVfzvK75 # -rw------- 1 root root 0 May 15 14:19 /tmp/tmp.uoRyIY06a6 # FAIL: file mismatch for ns1 <- ns2 # -rw------- 1 root root 2097152 May 15 14:17 /tmp/tmp.WVEVfzvK75 # -rw------- 1 root root 0 May 15 14:19 /tmp/tmp.12ilxJ8E7e # FAIL: flow offload for ns1/ns2 with dnat IPIP tunnel over vlan # FAIL: flow offload for ns1/ns2 with IPIP tunnel over vlan # table inet filter { # counter routed_orig { # packets 0 bytes 0 # } # # counter routed_repl { # packets 0 bytes 0 # } # # flowtable f1 { # hook ingress priority filter # devices = { "veth0", "veth1" } # } # # chain forward { # type filter hook forward priority filter; policy drop; # oif "tun6.10" accept # oif "tun0.10" accept # oif "veth1.10" accept # oif "veth0" tcp sport 12345 ct mark set 0x00000001 flow add @f1 counter name "routed_repl" accept # oif "tun6" accept # oif "tun0" accept # ip dscp set cs3 # ip dscp set cs3 # oif "veth1" tcp dport 12345 ct mark set 0x00000001 flow add @f1 counter name "routed_orig" accept # ct mark 0x00000001 counter name ct direction map { original : "routed_orig", reply : "routed_repl" } accept # ct state established,related accept # meta l4proto icmp accept # meta l4proto ipv6-icmp accept # } # } # table ip nat { # chain prerouting { # type nat hook prerouting priority filter; policy accept; # iif "veth0" ip daddr 10.6.6.6 tcp dport 1666 counter packets 2 bytes 120 dnat to 10.0.2.99:12345 # } # # chain postrouting { # type nat hook postrouting priority filter; policy accept; # oifname "veth1" counter packets 10 bytes 600 masquerade # } # } # 2026/05/15 14:21:31 socat[28046] W exiting on signal 15 # 2026/05/15 14:21:31 socat[28055] W exiting on signal 15 # FAIL: file mismatch for ns1 -> ns2 # -rw------- 1 root root 2097152 May 15 14:17 /tmp/tmp.WVEVfzvK75 # -rw------- 1 root root 0 May 15 14:20 /tmp/tmp.uoRyIY06a6 # FAIL: file mismatch for ns1 <- ns2 # -rw------- 1 root root 2097152 May 15 14:17 /tmp/tmp.WVEVfzvK75 # -rw------- 1 root root 0 May 15 14:20 /tmp/tmp.12ilxJ8E7e # FAIL: flow offload for ns1/ns2 with IP6IP6 tunnel over vlan # table inet filter { # counter routed_orig { # packets 0 bytes 0 # } # # counter routed_repl { # packets 0 bytes 0 # } # # flowtable f1 { # hook ingress priority filter # devices = { "veth0", "veth1" } # } # # chain forward { # type filter hook forward priority filter; policy drop; # oif "tun6.10" accept # oif "tun0.10" accept # oif "veth1.10" accept # oif "veth0" tcp sport 12345 ct mark set 0x00000001 flow add @f1 counter name "routed_repl" accept # oif "tun6" accept # oif "tun0" accept # ip dscp set cs3 # ip dscp set cs3 # oif "veth1" tcp dport 12345 ct mark set 0x00000001 flow add @f1 counter name "routed_orig" accept # ct mark 0x00000001 counter name ct direction map { original : "routed_orig", reply : "routed_repl" } accept # ct state established,related accept # meta l4proto icmp accept # meta l4proto ipv6-icmp accept # } # } # table ip nat { # chain prerouting { # type nat hook prerouting priority filter; policy accept; # iif "veth0" ip daddr 10.6.6.6 tcp dport 1666 counter packets 2 bytes 120 dnat to 10.0.2.99:12345 # } # # chain postrouting { # type nat hook postrouting priority filter; policy accept; # oifname "veth1" counter packets 10 bytes 600 masquerade # } # } # PASS: flow offload for ns1/ns2 with masquerade on bridge # PASS: flow offload for ns1/ns2 with dnat on bridge # PASS: flow offload for ns1/ns2 with masquerade bridge and VLAN # PASS: flow offload for ns1/ns2 with dnat bridge and VLAN # PASS: ipsec tunnel mode for ns1/ns2 # 2026/05/15 14:22:38 socat[28257] W exiting on signal 15 # 2026/05/15 14:22:38 socat[28266] W exiting on signal 15 # FAIL: file mismatch for ns1 -> ns2 # -rw------- 1 root root 2097152 May 15 14:17 /tmp/tmp.WVEVfzvK75 # -rw------- 1 root root 0 May 15 14:21 /tmp/tmp.uoRyIY06a6 # FAIL: file mismatch for ns1 <- ns2 # -rw------- 1 root root 2097152 May 15 14:17 /tmp/tmp.WVEVfzvK75 # -rw------- 1 root root 0 May 15 14:21 /tmp/tmp.12ilxJ8E7e # FAIL: IPv6 ipsec tunnel mode for ns1/ns2 # table inet filter { # counter routed_orig { # packets 0 bytes 0 # } # # counter routed_repl { # packets 0 bytes 0 # } # # flowtable f1 { # hook ingress priority filter # devices = { "veth0", "veth1" } # } # # chain forward { # type filter hook forward priority filter; policy drop; # oif "tun6.10" accept # oif "tun0.10" accept # oif "veth1.10" accept # oif "veth0" tcp sport 12345 ct mark set 0x00000001 flow add @f1 counter name "routed_repl" accept # oif "tun6" accept # oif "tun0" accept # ip dscp set cs3 # ip dscp set cs3 # oif "veth1" tcp dport 12345 ct mark set 0x00000001 flow add @f1 counter name "routed_orig" accept # ct mark 0x00000001 counter name ct direction map { original : "routed_orig", reply : "routed_repl" } accept # ct state established,related accept # meta l4proto icmp accept # meta l4proto ipv6-icmp accept # } # } # XfrmInError 0 # XfrmInBufferError 0 # XfrmInHdrError 0 # XfrmInNoStates 0 # XfrmInStateProtoError 0 # XfrmInStateModeError 0 # XfrmInStateSeqError 0 # XfrmInStateExpired 0 # XfrmInStateMismatch 0 # XfrmInStateInvalid 0 # XfrmInTmplMismatch 0 # XfrmInNoPols 0 # XfrmInPolBlock 0 # XfrmInPolError 0 # XfrmOutError 0 # XfrmOutBundleGenError 0 # XfrmOutBundleCheckError 0 # XfrmOutNoStates 0 # XfrmOutStateProtoError 0 # XfrmOutStateModeError 0 # XfrmOutStateSeqError 0 # XfrmOutStateExpired 0 # XfrmOutPolBlock 0 # XfrmOutPolDead 0 # XfrmOutPolError 0 # XfrmFwdHdrError 0 # XfrmOutStateInvalid 0 # XfrmAcquireError 0 # XfrmOutStateDirError 0 # XfrmInStateDirError 0 # XfrmInIptfsError 0 # XfrmOutNoQueueSpace 0 # re-run with random mtus and file size: -o 31682 -l 3639 -r 33350 -s 63949993 # PASS: flow offloaded for ns1/ns2 # PASS: IPv6 flow offloaded for ns1/ns2 # PASS: dscp_none: dscp packet counters match # PASS: dscp_ingress: dscp packet counters match # PASS: dscp_egress: dscp packet counters match # PASS: dscp_fwd: dscp packet counters match # PASS: flow offload for ns1/ns2 with masquerade (pmtu disabled) # PASS: flow offload for ns1/ns2 with dnat (pmtu disabled) # PASS: dscp_ingress: dscp packet counters match # PASS: dscp_egress: dscp packet counters match # PASS: dscp_fwd: dscp packet counters match # PASS: flow offload for ns1/ns2 with masquerade # PASS: flow offload for ns1/ns2 with dnat # 2026/05/15 14:24:03 socat[28631] W exiting on signal 15 # 2026/05/15 14:24:03 socat[28640] W exiting on signal 15 # FAIL: file mismatch for ns1 -> ns2 # -rw------- 1 root root 63949993 May 15 14:22 /tmp/tmp.kxQ53t71Bx # -rw------- 1 root root 0 May 15 14:23 /tmp/tmp.j7eGSyPz9e # FAIL: file mismatch for ns1 <- ns2 # -rw------- 1 root root 63949993 May 15 14:22 /tmp/tmp.kxQ53t71Bx # -rw------- 1 root root 0 May 15 14:23 /tmp/tmp.gYeDFBNLOi # FAIL: flow offload for ns1/ns2 with dnat IPIP tunnel # FAIL: flow offload for ns1/ns2 with IPIP tunnel # table inet filter { # counter routed_orig { # packets 0 bytes 0 # } # # counter routed_repl { # packets 0 bytes 0 # } # # flowtable f1 { # hook ingress priority filter # devices = { "veth0", "veth1" } # } # # chain forward { # type filter hook forward priority filter; policy drop; # oif "veth0" tcp sport 12345 ct mark set 0x00000001 flow add @f1 counter name "routed_repl" accept # oif "tun6" accept # oif "tun0" accept # ip dscp set cs3 # ip dscp set cs3 # oif "veth1" tcp dport 12345 ct mark set 0x00000001 flow add @f1 counter name "routed_orig" accept # ct mark 0x00000001 counter name ct direction map { original : "routed_orig", reply : "routed_repl" } accept # ct state established,related accept # meta l4proto icmp accept # meta l4proto ipv6-icmp accept # } # } # table ip nat { # chain prerouting { # type nat hook prerouting priority filter; policy accept; # iif "veth0" ip daddr 10.6.6.6 tcp dport 1666 counter packets 2 bytes 120 dnat to 10.0.2.99:12345 # } # # chain postrouting { # type nat hook postrouting priority filter; policy accept; # oifname "veth1" counter packets 10 bytes 600 masquerade # } # } # 2026/05/15 14:25:03 socat[28650] W exiting on signal 15 # 2026/05/15 14:25:03 socat[28659] W exiting on signal 15 # FAIL: file mismatch for ns1 -> ns2 # -rw------- 1 root root 63949993 May 15 14:22 /tmp/tmp.kxQ53t71Bx # -rw------- 1 root root 0 May 15 14:24 /tmp/tmp.j7eGSyPz9e # FAIL: file mismatch for ns1 <- ns2 # -rw------- 1 root root 63949993 May 15 14:22 /tmp/tmp.kxQ53t71Bx # -rw------- 1 root root 0 May 15 14:24 /tmp/tmp.gYeDFBNLOi # FAIL: flow offload for ns1/ns2 with IP6IP6 tunnel # table inet filter { # counter routed_orig { # packets 0 bytes 0 # } # # counter routed_repl { # packets 0 bytes 0 # } # # flowtable f1 { # hook ingress priority filter # devices = { "veth0", "veth1" } # } # # chain forward { # type filter hook forward priority filter; policy drop; # oif "veth0" tcp sport 12345 ct mark set 0x00000001 flow add @f1 counter name "routed_repl" accept # oif "tun6" accept # oif "tun0" accept # ip dscp set cs3 # ip dscp set cs3 # oif "veth1" tcp dport 12345 ct mark set 0x00000001 flow add @f1 counter name "routed_orig" accept # ct mark 0x00000001 counter name ct direction map { original : "routed_orig", reply : "routed_repl" } accept # ct state established,related accept # meta l4proto icmp accept # meta l4proto ipv6-icmp accept # } # } # table ip nat { # chain prerouting { # type nat hook prerouting priority filter; policy accept; # iif "veth0" ip daddr 10.6.6.6 tcp dport 1666 counter packets 2 bytes 120 dnat to 10.0.2.99:12345 # } # # chain postrouting { # type nat hook postrouting priority filter; policy accept; # oifname "veth1" counter packets 10 bytes 600 masquerade # } # } # 2026/05/15 14:26:05 socat[28705] W exiting on signal 15 # 2026/05/15 14:26:05 socat[28714] W exiting on signal 15 # FAIL: file mismatch for ns1 -> ns2 # -rw------- 1 root root 63949993 May 15 14:22 /tmp/tmp.kxQ53t71Bx # -rw------- 1 root root 0 May 15 14:25 /tmp/tmp.j7eGSyPz9e # FAIL: file mismatch for ns1 <- ns2 # -rw------- 1 root root 63949993 May 15 14:22 /tmp/tmp.kxQ53t71Bx # -rw------- 1 root root 0 May 15 14:25 /tmp/tmp.gYeDFBNLOi # FAIL: flow offload for ns1/ns2 with dnat IPIP tunnel over vlan # FAIL: flow offload for ns1/ns2 with IPIP tunnel over vlan # table inet filter { # counter routed_orig { # packets 0 bytes 0 # } # # counter routed_repl { # packets 0 bytes 0 # } # # flowtable f1 { # hook ingress priority filter # devices = { "veth0", "veth1" } # } # # chain forward { # type filter hook forward priority filter; policy drop; # oif "tun6.10" accept # oif "tun0.10" accept # oif "veth1.10" accept # oif "veth0" tcp sport 12345 ct mark set 0x00000001 flow add @f1 counter name "routed_repl" accept # oif "tun6" accept # oif "tun0" accept # ip dscp set cs3 # ip dscp set cs3 # oif "veth1" tcp dport 12345 ct mark set 0x00000001 flow add @f1 counter name "routed_orig" accept # ct mark 0x00000001 counter name ct direction map { original : "routed_orig", reply : "routed_repl" } accept # ct state established,related accept # meta l4proto icmp accept # meta l4proto ipv6-icmp accept # } # } # table ip nat { # chain prerouting { # type nat hook prerouting priority filter; policy accept; # iif "veth0" ip daddr 10.6.6.6 tcp dport 1666 counter packets 2 bytes 120 dnat to 10.0.2.99:12345 # } # # chain postrouting { # type nat hook postrouting priority filter; policy accept; # oifname "veth1" counter packets 10 bytes 600 masquerade # } # } # 2026/05/15 14:27:05 socat[28724] W exiting on signal 15 # 2026/05/15 14:27:05 socat[28733] W exiting on signal 15 # FAIL: file mismatch for ns1 -> ns2 # -rw------- 1 root root 63949993 May 15 14:22 /tmp/tmp.kxQ53t71Bx # -rw------- 1 root root 0 May 15 14:26 /tmp/tmp.j7eGSyPz9e # FAIL: file mismatch for ns1 <- ns2 # -rw------- 1 root root 63949993 May 15 14:22 /tmp/tmp.kxQ53t71Bx # -rw------- 1 root root 0 May 15 14:26 /tmp/tmp.gYeDFBNLOi # FAIL: flow offload for ns1/ns2 with IP6IP6 tunnel over vlan # table inet filter { # counter routed_orig { # packets 0 bytes 0 # } # # counter routed_repl { # packets 0 bytes 0 # } # # flowtable f1 { # hook ingress priority filter # devices = { "veth0", "veth1" } # } # # chain forward { # type filter hook forward priority filter; policy drop; # oif "tun6.10" accept # oif "tun0.10" accept # oif "veth1.10" accept # oif "veth0" tcp sport 12345 ct mark set 0x00000001 flow add @f1 counter name "routed_repl" accept # oif "tun6" accept # oif "tun0" accept # ip dscp set cs3 # ip dscp set cs3 # oif "veth1" tcp dport 12345 ct mark set 0x00000001 flow add @f1 counter name "routed_orig" accept # ct mark 0x00000001 counter name ct direction map { original : "routed_orig", reply : "routed_repl" } accept # ct state established,related accept # meta l4proto icmp accept # meta l4proto ipv6-icmp accept # } # } # table ip nat { # chain prerouting { # type nat hook prerouting priority filter; policy accept; # iif "veth0" ip daddr 10.6.6.6 tcp dport 1666 counter packets 2 bytes 120 dnat to 10.0.2.99:12345 # } # # chain postrouting { # type nat hook postrouting priority filter; policy accept; # oifname "veth1" counter packets 10 bytes 600 masquerade # } # } # PASS: flow offload for ns1/ns2 with masquerade on bridge # PASS: flow offload for ns1/ns2 with dnat on bridge # PASS: flow offload for ns1/ns2 with masquerade bridge and VLAN # PASS: flow offload for ns1/ns2 with dnat bridge and VLAN # PASS: ipsec tunnel mode for ns1/ns2 # 2026/05/15 14:28:33 socat[28919] W exiting on signal 15 # 2026/05/15 14:28:33 socat[28925] W exiting on signal 15 # FAIL: file mismatch for ns1 -> ns2 # -rw------- 1 root root 63949993 May 15 14:22 /tmp/tmp.kxQ53t71Bx # -rw------- 1 root root 0 May 15 14:27 /tmp/tmp.j7eGSyPz9e # FAIL: file mismatch for ns1 <- ns2 # -rw------- 1 root root 63949993 May 15 14:22 /tmp/tmp.kxQ53t71Bx # -rw------- 1 root root 0 May 15 14:27 /tmp/tmp.gYeDFBNLOi # FAIL: IPv6 ipsec tunnel mode for ns1/ns2 # table inet filter { # counter routed_orig { # packets 0 bytes 0 # } # # counter routed_repl { # packets 0 bytes 0 # } # # flowtable f1 { # hook ingress priority filter # devices = { "veth0", "veth1" } # } # # chain forward { # type filter hook forward priority filter; policy drop; # oif "tun6.10" accept # oif "tun0.10" accept # oif "veth1.10" accept # oif "veth0" tcp sport 12345 ct mark set 0x00000001 flow add @f1 counter name "routed_repl" accept # oif "tun6" accept # oif "tun0" accept # ip dscp set cs3 # ip dscp set cs3 # oif "veth1" tcp dport 12345 ct mark set 0x00000001 flow add @f1 counter name "routed_orig" accept # ct mark 0x00000001 counter name ct direction map { original : "routed_orig", reply : "routed_repl" } accept # ct state established,related accept # meta l4proto icmp accept # meta l4proto ipv6-icmp accept # } # } # XfrmInError 0 # XfrmInBufferError 0 # XfrmInHdrError 0 # XfrmInNoStates 0 # XfrmInStateProtoError 0 # XfrmInStateModeError 0 # XfrmInStateSeqError 0 # XfrmInStateExpired 0 # XfrmInStateMismatch 0 # XfrmInStateInvalid 0 # XfrmInTmplMismatch 0 # XfrmInNoPols 0 # XfrmInPolBlock 0 # XfrmInPolError 0 # XfrmOutError 0 # XfrmOutBundleGenError 0 # XfrmOutBundleCheckError 0 # XfrmOutNoStates 0 # XfrmOutStateProtoError 0 # XfrmOutStateModeError 0 # XfrmOutStateSeqError 0 # XfrmOutStateExpired 0 # XfrmOutPolBlock 0 # XfrmOutPolDead 0 # XfrmOutPolError 0 # XfrmFwdHdrError 0 # XfrmOutStateInvalid 0 # XfrmAcquireError 0 # XfrmOutStateDirError 0 # XfrmInStateDirError 0 # XfrmInIptfsError 0 # XfrmOutNoQueueSpace 0 not ok 1 selftests: net/netfilter: nft_flowtable.sh # exit=1 make[1]: Leaving directory '/srv/vmksft/testing/wt-16/tools/testing/selftests/net/netfilter' make: Leaving directory '/srv/vmksft/testing/wt-16/tools/testing/selftests' xx__-> echo $? 0 xx__-> echo scan > /sys/kernel/debug/kmemleak xx__->