mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-16 09:02:21 -04:00
selftests: net: add team_bridge_macvlan rx_mode test
Add a test that exercises the ndo_change_rx_flags path through a macvlan -> bridge -> team -> dummy stack. This triggers dev_uc_add under addr_list_lock which flips promiscuity on the lower device. With the new work queue approach, this must not deadlock. Link: https://lore.kernel.org/netdev/20260214033859.43857-1-jiayuan.chen@linux.dev/ Reviewed-by: Breno Leitao <leitao@debian.org> Signed-off-by: Stanislav Fomichev <sdf@fomichev.me> Link: https://patch.msgid.link/20260416185712.2155425-15-sdf@fomichev.me Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
committed by
Paolo Abeni
parent
3cbd229388
commit
ee514cdb07
@@ -101,6 +101,7 @@ CONFIG_NET_SCH_HTB=m
|
||||
CONFIG_NET_SCH_INGRESS=m
|
||||
CONFIG_NET_SCH_NETEM=y
|
||||
CONFIG_NET_SCH_PRIO=m
|
||||
CONFIG_NET_TEAM=y
|
||||
CONFIG_NET_VRF=y
|
||||
CONFIG_NF_CONNTRACK=m
|
||||
CONFIG_NF_CONNTRACK_OVS=y
|
||||
|
||||
@@ -23,6 +23,7 @@ ALL_TESTS="
|
||||
kci_test_encap
|
||||
kci_test_macsec
|
||||
kci_test_macsec_vlan
|
||||
kci_test_team_bridge_macvlan
|
||||
kci_test_ipsec
|
||||
kci_test_ipsec_offload
|
||||
kci_test_fdb_get
|
||||
@@ -636,6 +637,49 @@ kci_test_macsec_vlan()
|
||||
end_test "PASS: macsec_vlan"
|
||||
}
|
||||
|
||||
# Test ndo_change_rx_flags call from dev_uc_add under addr_list_lock spinlock.
|
||||
# When we are flipping the promisc, make sure it runs on the work queue.
|
||||
#
|
||||
# https://lore.kernel.org/netdev/20260214033859.43857-1-jiayuan.chen@linux.dev/
|
||||
# With (more conventional) macvlan instead of macsec.
|
||||
# macvlan -> bridge -> team -> dummy
|
||||
kci_test_team_bridge_macvlan()
|
||||
{
|
||||
local vlan="test_macv1"
|
||||
local bridge="test_br1"
|
||||
local team="test_team1"
|
||||
local dummy="test_dummy1"
|
||||
local ret=0
|
||||
|
||||
run_cmd ip link add $team type team
|
||||
if [ $ret -ne 0 ]; then
|
||||
end_test "SKIP: team_bridge_macvlan: can't add team interface"
|
||||
return $ksft_skip
|
||||
fi
|
||||
|
||||
run_cmd ip link add $dummy type dummy
|
||||
run_cmd ip link set $dummy master $team
|
||||
run_cmd ip link set $team up
|
||||
run_cmd ip link add $bridge type bridge vlan_filtering 1
|
||||
run_cmd ip link set $bridge up
|
||||
run_cmd ip link set $team master $bridge
|
||||
run_cmd ip link add link $bridge name $vlan \
|
||||
address 00:aa:bb:cc:dd:ee type macvlan mode bridge
|
||||
run_cmd ip link set $vlan up
|
||||
|
||||
run_cmd ip link del $vlan
|
||||
run_cmd ip link del $bridge
|
||||
run_cmd ip link del $team
|
||||
run_cmd ip link del $dummy
|
||||
|
||||
if [ $ret -ne 0 ]; then
|
||||
end_test "FAIL: team_bridge_macvlan"
|
||||
return 1
|
||||
fi
|
||||
|
||||
end_test "PASS: team_bridge_macvlan"
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
# Example commands
|
||||
# ip x s add proto esp src 14.0.0.52 dst 14.0.0.70 \
|
||||
|
||||
Reference in New Issue
Block a user