linux-stable/tools/testing/selftests/net
Jakub Kicinski 52f671db18 net/sched: act_mirred: use the backlog for mirred ingress
The test Davide added in commit ca22da2fbd ("act_mirred: use the backlog
for nested calls to mirred ingress") hangs our testing VMs every 10 or so
runs, with the familiar tcp_v4_rcv -> tcp_v4_rcv deadlock reported by
lockdep.

The problem as previously described by Davide (see Link) is that
if we reverse flow of traffic with the redirect (egress -> ingress)
we may reach the same socket which generated the packet. And we may
still be holding its socket lock. The common solution to such deadlocks
is to put the packet in the Rx backlog, rather than run the Rx path
inline. Do that for all egress -> ingress reversals, not just once
we started to nest mirred calls.

In the past there was a concern that the backlog indirection will
lead to loss of error reporting / less accurate stats. But the current
workaround does not seem to address the issue.

Fixes: 53592b3640 ("net/sched: act_mirred: Implement ingress actions")
Cc: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
Suggested-by: Davide Caratti <dcaratti@redhat.com>
Link: https://lore.kernel.org/netdev/33dc43f587ec1388ba456b4915c75f02a8aae226.1663945716.git.dcaratti@redhat.com/
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2024-02-16 10:13:31 +00:00
..
af_unix selftests/net: unix: fix unused variable compiler warning 2023-11-27 18:12:07 -08:00
forwarding net/sched: act_mirred: use the backlog for mirred ingress 2024-02-16 10:13:31 +00:00
hsr selftests: hsr: Extend the testsuite to also cover HSRv1. 2023-09-18 08:26:19 +01:00
mptcp selftests: mptcp: join: stop transfer when check is done (part 2) 2024-02-01 09:06:38 -08:00
openvswitch selftests: openvswitch: Add validation for the recursion test 2024-02-09 12:54:38 -08:00
tcp_ao selftests/net: Amend per-netns counter checks 2024-02-06 10:35:29 +01:00
.gitignore selftests/net: Add log.txt and tools to .gitignore 2023-08-20 15:15:41 +01:00
altnames.sh
amt.sh
arp_ndisc_evict_nocarrier.sh selftests/net: convert arp_ndisc_evict_nocarrier.sh to run it in unique namespace 2023-12-05 13:00:55 +01:00
arp_ndisc_untracked_subnets.sh selftests/net: convert arp_ndisc_untracked_subnets.sh to run it in unique namespace 2023-12-05 13:00:56 +01:00
bareudp.sh
big_tcp.sh selftests: net: let big_tcp test cope with slow env 2024-02-05 12:36:16 +00:00
bind_bhash.c
bind_bhash.sh selftests/net: Improve bind_bhash.sh to accommodate predictable network interface names 2023-09-10 18:49:29 +01:00
bind_timewait.c
bind_wildcard.c selftest: tcp: Add v4-mapped-v6 cases in bind_wildcard.c. 2023-09-13 07:18:04 +01:00
cmsg_ipv6.sh selftests: cmsg_ipv6: repeat the exact packet 2024-02-07 13:38:14 +00:00
cmsg_sender.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2023-11-30 16:11:19 -08:00
cmsg_so_mark.sh selftests/net: convert cmsg tests to make them run in unique namespace 2023-12-05 13:00:56 +01:00
cmsg_time.sh selftests/net: convert cmsg tests to make them run in unique namespace 2023-12-05 13:00:56 +01:00
config selftests: net: add more missing kernel config 2024-02-08 19:02:51 -08:00
csum.c selftests/net: replace manual array size calc with ARRAYSIZE macro. 2023-07-18 17:43:51 -07:00
devlink_port_split.py
drop_monitor_tests.sh selftests/net: convert drop_monitor_tests.sh to run it in unique namespace 2023-12-05 13:00:56 +01:00
fcnal-test.sh selftests/net: convert fcnal-test.sh to run it in unique namespace 2023-12-14 18:38:35 -08:00
fdb_flush.sh selftests/net: convert fdb_flush.sh to run it in unique namespace 2023-12-14 18:38:36 -08:00
fib-onlink-tests.sh selftests/net: convert fib-onlink-tests.sh to run it in unique namespace 2023-12-14 18:38:35 -08:00
fib_nexthop_multiprefix.sh selftests/net: convert fib_nexthop_multiprefix to run it in unique namespace 2023-12-14 18:38:35 -08:00
fib_nexthop_nongw.sh selftests/net: convert fib_nexthop_nongw.sh to run it in unique namespace 2023-12-14 18:38:35 -08:00
fib_nexthops.sh selftests/net: convert fib_nexthops.sh to run it in unique namespace 2023-12-14 18:38:35 -08:00
fib_rule_tests.sh selftests/net: convert fib_rule_tests.sh to run it in unique namespace 2023-12-14 18:38:36 -08:00
fib_tests.sh selftests/net: convert fib_tests.sh to run it in unique namespace 2023-12-14 18:38:36 -08:00
fin_ack_lat.c
fin_ack_lat.sh
fq_band_pktlimit.sh selftests: net: verify fq per-band packet limit 2023-11-20 17:48:36 -08:00
gre_gso.sh selftests/net: convert gre_gso.sh to run it in unique namespace 2023-12-23 00:26:32 +00:00
gro.c selftests/net: fix GRO coalesce test and add ext header coalesce tests 2024-01-05 08:11:50 -08:00
gro.sh selftests: net: cope with slow env in gro.sh test 2024-02-13 10:10:11 -08:00
hwtstamp_config.c selftests/net: replace manual array size calc with ARRAYSIZE macro. 2023-07-18 17:43:51 -07:00
icmp.sh sleftests/net: convert icmp.sh to run it in unique namespace 2023-12-05 13:00:56 +01:00
icmp_redirect.sh selftests/net: convert icmp_redirect.sh to run it in unique namespace 2023-12-05 13:00:56 +01:00
in_netns.sh
io_uring_zerocopy_tx.c selftests/net: Extract uring helpers to be reusable 2023-10-19 16:42:03 -06:00
io_uring_zerocopy_tx.sh selftests/net: optmem_max became per netns 2023-12-15 11:01:27 +00:00
ioam6.sh selftests/net: convert ioam6.sh to run it in unique namespace 2023-12-05 13:00:56 +01:00
ioam6_parser.c
ip6_gre_headroom.sh
ip_defrag.c
ip_defrag.sh
ip_local_port_range.c selftests: net: ip_local_port_range: define IPPROTO_MPTCP 2024-02-12 16:39:28 -08:00
ip_local_port_range.sh
ipsec.c selftests/net: ipsec: fix constant out of range 2023-11-27 18:12:07 -08:00
ipv6_flowlabel.c
ipv6_flowlabel.sh
ipv6_flowlabel_mgr.c
l2_tos_ttl_inherit.sh
l2tp.sh selftests/net: convert l2tp.sh to run it in unique namespace 2023-12-05 13:00:56 +01:00
lib.sh selftests/net/lib: update busywait timeout value 2024-01-25 17:07:14 -08:00
Makefile selftests: net: List helper scripts in TEST_FILES Makefile variable 2024-02-01 08:36:32 -08:00
msg_zerocopy.c
msg_zerocopy.sh selftests/net: optmem_max became per netns 2023-12-15 11:01:27 +00:00
nat6to4.c
ndisc_unsolicited_na_test.sh selftests/net: convert ndisc_unsolicited_na_test.sh to run it in unique namespace 2023-12-05 13:00:56 +01:00
net_helper.sh selftests: net: more strict check in net_helper 2024-02-13 10:19:05 -08:00
netdevice.sh
netns-name.sh selftests/net: convert netns-name.sh to run it in unique namespace 2023-12-23 00:26:32 +00:00
nettest.c selftests: net: remove unused variables 2023-10-16 09:20:08 +01:00
pmtu.sh selftests: net: more pmtu.sh fixes 2024-02-13 10:19:05 -08:00
psock_fanout.c
psock_lib.h selftests/net: replace manual array size calc with ARRAYSIZE macro. 2023-07-18 17:43:51 -07:00
psock_snd.c
psock_snd.sh
psock_tpacket.c
reuseaddr_conflict.c
reuseaddr_ports_exhausted.c
reuseaddr_ports_exhausted.sh
reuseport_addr_any.c
reuseport_addr_any.sh
reuseport_bpf.c
reuseport_bpf_cpu.c
reuseport_bpf_numa.c
reuseport_dualstack.c
route_localnet.sh selftests: net: change ifconfig with ip command 2023-10-24 13:53:39 -07:00
rps_default_mask.sh selftests: net: fix rps_default_mask with >32 CPUs 2024-01-24 13:55:19 -08:00
rtnetlink.sh selftests: net: fix setup_ns usage in rtnetlink.sh 2024-02-02 21:11:07 -08:00
run_afpackettests
run_netsocktests
rxtimestamp.c
rxtimestamp.sh
sctp_hello.c
sctp_vrf.sh selftests/net: convert sctp_vrf.sh to run it in unique namespace 2023-12-05 13:00:56 +01:00
settings selftests/net: convert fcnal-test.sh to run it in unique namespace 2023-12-14 18:38:35 -08:00
setup_loopback.sh selftests: net: Remove executable bits from library scripts 2024-02-01 08:36:29 -08:00
setup_veth.sh selftests: net: give more time for GRO aggregation 2024-01-26 14:11:57 -08:00
sk_bind_sendto_listen.c
sk_connect_zero_addr.c
so_incoming_cpu.c selftest: Don't reuse port for SO_INCOMING_CPU test. 2024-01-23 10:48:07 +01:00
so_netns_cookie.c
so_txtime.c
so_txtime.sh selftests: net: cope with slow env in so_txtime.sh test 2024-02-13 10:10:44 -08:00
socket.c
srv6_end_dt4_l3vpn_test.sh selftests/net: convert srv6_end_dt4_l3vpn_test.sh to run it in unique namespace 2023-12-14 18:38:34 -08:00
srv6_end_dt6_l3vpn_test.sh selftests/net: convert srv6_end_dt6_l3vpn_test.sh to run it in unique namespace 2023-12-14 18:38:35 -08:00
srv6_end_dt46_l3vpn_test.sh selftests/net: convert srv6_end_dt46_l3vpn_test.sh to run it in unique namespace 2023-12-14 18:38:34 -08:00
srv6_end_flavors_test.sh
srv6_end_next_csid_l3vpn_test.sh
srv6_end_x_next_csid_l3vpn_test.sh selftests: seg6: add selftest for NEXT-C-SID flavor in SRv6 End.X behavior 2023-08-15 18:51:47 -07:00
srv6_hencap_red_l3vpn_test.sh
srv6_hl2encap_red_l2vpn_test.sh
stress_reuseport_listen.c
stress_reuseport_listen.sh selftests/net: convert stress_reuseport_listen.sh to run it in unique namespace 2023-12-23 00:26:32 +00:00
tap.c
tcp_fastopen_backup_key.c
tcp_fastopen_backup_key.sh
tcp_inq.c
tcp_mmap.c selftests/net: report rcv_mss in tcp_mmap 2023-08-02 11:40:49 +01:00
test_blackhole_dev.sh
test_bpf.sh
test_bridge_backup_port.sh selftests: net: Fix bridge backup port test flakiness 2024-02-09 11:29:52 -08:00
test_bridge_neigh_suppress.sh selftests/net: convert test_bridge_neigh_suppress.sh to run it in unique namespace 2023-12-08 12:12:15 +00:00
test_ingress_egress_chaining.sh
test_vxlan_fdb_changelink.sh
test_vxlan_mdb.sh selftests: vxlan_mdb: Add MDB bulk deletion test 2023-12-20 11:27:21 +00:00
test_vxlan_nolocalbypass.sh selftests/net: convert test_vxlan_nolocalbypass.sh to run it in unique namespace 2023-12-08 12:12:16 +00:00
test_vxlan_under_vrf.sh selftests/net: convert test_vxlan_under_vrf.sh to run it in unique namespace 2023-12-08 12:12:16 +00:00
test_vxlan_vnifiltering.sh selftests/net: convert test_vxlan_vnifiltering.sh to run it in unique namespace 2023-12-08 12:12:16 +00:00
timestamping.c
tls.c selftests: tls: increase the wait in poll_partial_rec_async 2024-02-14 18:02:02 -08:00
toeplitz.c
toeplitz.sh selftests/net: use unique netns name for setup_loopback.sh setup_veth.sh 2023-12-23 00:26:32 +00:00
toeplitz_client.sh
traceroute.sh selftests/net: convert traceroute.sh to run it in unique namespace 2023-12-05 13:00:56 +01:00
tun.c
txring_overwrite.c
txtimestamp.c
txtimestamp.sh
udpgro.sh selftests: net: remove dependency on ebpf tests 2024-01-25 15:59:22 -08:00
udpgro_bench.sh selftests: net: remove dependency on ebpf tests 2024-01-25 15:59:22 -08:00
udpgro_frglist.sh selftests: net: remove dependency on ebpf tests 2024-01-25 15:59:22 -08:00
udpgro_fwd.sh selftests: net: cut more slack for gro fwd tests. 2024-02-02 21:10:36 -08:00
udpgso.c
udpgso.sh
udpgso_bench.sh
udpgso_bench_rx.c selftests: net: cut more slack for gro fwd tests. 2024-02-02 21:10:36 -08:00
udpgso_bench_tx.c
unicast_extensions.sh selftests/net: change shebang to bash to support "source" 2024-01-03 17:08:28 -08:00
veth.sh selftests: net: remove dependency on ebpf tests 2024-01-25 15:59:22 -08:00
vlan_hw_filter.sh selftests: add vlan hw filter tests 2023-12-19 13:13:56 +01:00
vrf-xfrm-tests.sh selftests/net: convert vrf-xfrm-tests.sh to run it in unique namespace 2023-12-08 12:12:16 +00:00
vrf_route_leaking.sh selftests/net: convert vrf_route_leaking.sh to run it in unique namespace 2023-12-08 12:12:16 +00:00
vrf_strict_mode_test.sh selftests/net: convert vrf_strict_mode_test.sh to run it in unique namespace 2023-12-08 12:12:16 +00:00
xdp_dummy.c selftests: net: remove dependency on ebpf tests 2024-01-25 15:59:22 -08:00
xfrm_policy.sh selftests/net: convert xfrm_policy.sh to run it in unique namespace 2023-12-23 00:26:32 +00:00