Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 23 May 2025 22:52:52 GMT
From:      Gleb Smirnoff <glebius@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: 46c644620117 - main - tests/unix_seqpacket: add couple tests for shutdown(2)
Message-ID:  <202505232252.54NMqqMP050729@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by glebius:

URL: https://cgit.FreeBSD.org/src/commit/?id=46c64462011716213f15c20b1c027cd85cb8bd14

commit 46c64462011716213f15c20b1c027cd85cb8bd14
Author:     Gleb Smirnoff <glebius@FreeBSD.org>
AuthorDate: 2025-05-12 16:32:23 +0000
Commit:     Gleb Smirnoff <glebius@FreeBSD.org>
CommitDate: 2025-05-23 22:04:38 +0000

    tests/unix_seqpacket: add couple tests for shutdown(2)
    
    - A test against recent syzkaller discovery.
    - A test that remote peer shutdown(2) will unblock our recv(2)
---
 tests/sys/kern/unix_seqpacket_test.c | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/tests/sys/kern/unix_seqpacket_test.c b/tests/sys/kern/unix_seqpacket_test.c
index 058c931163a1..b9a6be015241 100644
--- a/tests/sys/kern/unix_seqpacket_test.c
+++ b/tests/sys/kern/unix_seqpacket_test.c
@@ -894,6 +894,38 @@ ATF_TC_BODY(shutdown_send_sigpipe, tc)
 	close(s2);
 }
 
+/*
+ * https://syzkaller.appspot.com/bug?id=ac94349a29f2efc40e9274239e4ca9b2c473a4e7
+ */
+ATF_TC_WITHOUT_HEAD(shutdown_o_async);
+ATF_TC_BODY(shutdown_o_async, tc)
+{
+	int sv[2];
+
+	do_socketpair(sv);
+
+	ATF_CHECK_EQ(0, fcntl(sv[0], F_SETFL, O_ASYNC));
+	ATF_CHECK_EQ(0, shutdown(sv[0], SHUT_WR));
+	close(sv[0]);
+	close(sv[1]);
+}
+
+/*
+ * If peer had done SHUT_WR on their side, our recv(2) shouldn't block.
+ */
+ATF_TC_WITHOUT_HEAD(shutdown_recv);
+ATF_TC_BODY(shutdown_recv, tc)
+{
+	char buf[10];
+	int sv[2];
+
+	do_socketpair(sv);
+	ATF_CHECK_EQ(0, shutdown(sv[0], SHUT_WR));
+	ATF_CHECK_EQ(0, recv(sv[1], buf, sizeof(buf), 0));
+	close(sv[0]);
+	close(sv[1]);
+}
+
 /* nonblocking send(2) and recv(2) a single short record */
 ATF_TC_WITHOUT_HEAD(send_recv_nonblocking);
 ATF_TC_BODY(send_recv_nonblocking, tc)
@@ -1310,6 +1342,8 @@ ATF_TP_ADD_TCS(tp)
 	ATF_TP_ADD_TC(tp, implied_connect);
 	ATF_TP_ADD_TC(tp, shutdown_send);
 	ATF_TP_ADD_TC(tp, shutdown_send_sigpipe);
+	ATF_TP_ADD_TC(tp, shutdown_o_async);
+	ATF_TP_ADD_TC(tp, shutdown_recv);
 	ATF_TP_ADD_TC(tp, eagain_8k_8k);
 	ATF_TP_ADD_TC(tp, eagain_8k_128k);
 	ATF_TP_ADD_TC(tp, eagain_128k_8k);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202505232252.54NMqqMP050729>