Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 04 May 2026 16:51:18 +0000
From:      Zhenlei Huang <zlei@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
Subject:   git: 320805add13d - stable/14 - tests/net/if_clone_test: Add a test for races between if_detach() and if_vmove_reclaim()
Message-ID:  <69f8ce86.25b41.10828a42@gitrepo.freebsd.org>

index | next in thread | raw e-mail

The branch stable/14 has been updated by zlei:

URL: https://cgit.FreeBSD.org/src/commit/?id=320805add13ddf8e680d88f5c9b3ae3b6a49f6cf

commit 320805add13ddf8e680d88f5c9b3ae3b6a49f6cf
Author:     Zhenlei Huang <zlei@FreeBSD.org>
AuthorDate: 2026-04-27 19:17:21 +0000
Commit:     Zhenlei Huang <zlei@FreeBSD.org>
CommitDate: 2026-05-04 16:49:42 +0000

    tests/net/if_clone_test: Add a test for races between if_detach() and if_vmove_reclaim()
    
    Ideally we shall have tests for all possible races. It is races between
    if_detach(), if_vmove_loan(), if_vmove_reclaim() and vnet_if_return().
    Well that requires too many tests and it appears to be less valuable to
    have them all. So focus on potential in future regressions related to
    recent fixes [1] and [2] only.
    
    [1] ee9456ce3753 ifnet: Fix races in if_vmove_reclaim()
    [2] ba7f47d47dc1 ifnet: if_detach(): Fix races with vmove operations
    
    MFC after:      3 days
    Differential Revision:  https://reviews.freebsd.org/D56606
    
    (cherry picked from commit f4be16983dea4904f85ac20e921ad2a8c18a0f79)
    (cherry picked from commit 696d1590697e9d4c0f07ce0a8d76a62bc77bdfd5)
---
 tests/sys/net/if_clone_test.sh | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/tests/sys/net/if_clone_test.sh b/tests/sys/net/if_clone_test.sh
index de7384d9053c..7dbfc7759cd5 100755
--- a/tests/sys/net/if_clone_test.sh
+++ b/tests/sys/net/if_clone_test.sh
@@ -96,6 +96,34 @@ epair_destroy_race_cleanup()
 	cleanup_ifaces
 }
 
+atf_test_case epair_destroy_race2 cleanup
+epair_destroy_race2_head()
+{
+	atf_set "descr" "Race if_detach() and if_vmove_reclaim()"
+	atf_set "require.user" "root"
+}
+epair_destroy_race2_body()
+{
+	jid=$(jail -ic vnet host.hostname="epair_destroy2" persist path=/)
+
+	for i in `seq 1 10`
+	do
+		epair_a=$(ifconfig epair create)
+		epair_b=${epair_a%a}b
+		ifconfig $epair_b vnet $jid
+		ifconfig $epair_a destroy & pid1=$!
+		ifconfig $epair_b -vnet $jid & pid2=$!
+		wait $pid1
+		wait $pid2
+	done
+
+	jail -R $jid
+	true
+}
+epair_destroy_race2_cleanup()
+{
+}
+
 atf_test_case epair_ipv6_up_stress cleanup
 epair_ipv6_up_stress_head()
 {
@@ -433,6 +461,7 @@ atf_init_test_cases()
 	atf_add_test_case epair_stress
 	atf_add_test_case epair_up_stress
 	atf_add_test_case epair_destroy_race
+	atf_add_test_case epair_destroy_race2
 	atf_add_test_case faith_ipv6_up_stress
 	atf_add_test_case faith_stress
 	atf_add_test_case faith_up_stress


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?69f8ce86.25b41.10828a42>