All of lore.kernel.org
 help / color / mirror / Atom feed
* [LTP] [PATCH v1] syscalls/connect02: Handle IPV6_ADDRFORM removal and listen() EINVAL
@ 2026-10-14  7:56 Ramesh Chhetri
  2026-10-14 11:22 ` [LTP] " linuxtestproject.agent
  0 siblings, 1 reply; 2+ messages in thread
From: Ramesh Chhetri @ 2026-10-14  7:56 UTC (permalink / raw)
  To: ltp; +Cc: rameshch

Upstream kernel commit 31c5ea8a3296 ("ipv6: Remove IPV6_ADDRFORM.") completely
removed IPV6_ADDRFORM socket option support from the Linux kernel, causing
setsockopt(SOL_IPV6, IPV6_ADDRFORM, ...) to return -ENOPROTOOPT.

In addition, commit 8cc3aef0cb19 ("tcp: Do not allow buggy transitions between
ehash and lhash2.") intentionally disallows converting an unhashed established
socket into a listening socket by returning -EINVAL from listen().

Update connect02 to:
1. Skip the test with TCONF when IPV6_ADDRFORM returns ENOPROTOOPT or EOPNOTSUPP.
2. Accept EINVAL from listen() on kernels with the TCP transition restriction.

Signed-off-by: Ramesh Chhetri <rameshch@linux.ibm.com>
---
 testcases/kernel/syscalls/connect/connect02.c | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/testcases/kernel/syscalls/connect/connect02.c b/testcases/kernel/syscalls/connect/connect02.c
index 079bc5bca..0b7e7df90 100644
--- a/testcases/kernel/syscalls/connect/connect02.c
+++ b/testcases/kernel/syscalls/connect/connect02.c
@@ -91,6 +91,14 @@ static void run(void)
 			sizeof(optval)));
 
 		if (TST_RET == -1) {
+			SAFE_CLOSE(confd1);
+			SAFE_CLOSE(fd);
+
+			if (TST_ERR == ENOPROTOOPT || TST_ERR == EOPNOTSUPP) {
+				tst_brk(TCONF | TTERRNO,
+					"IPV6_ADDRFORM is removed/unsupported by this kernel");
+			}
+
 			tst_res(TFAIL | TTERRNO,
 				"setsockopt(IPV6_ADDRFORM) failed");
 			return;
@@ -104,7 +112,15 @@ static void run(void)
 			sizeof(reset_addr));
 		SAFE_BIND(fd, (struct sockaddr *)&bind_addr4,
 			sizeof(bind_addr4));
-		SAFE_LISTEN(fd, 5);
+		TEST(listen(fd, 5));
+		if (TST_RET == -1) {
+			if (TST_ERR == EINVAL) {
+				SAFE_CLOSE(fd);
+				SAFE_CLOSE(confd1);
+				continue;
+			}
+			tst_brk(TBROK | TTERRNO, "listen(fd,5) failed unexpectedly");
+		}
 
 		addrlen = tst_get_connect_address(fd, &client_addr2);
 		confd2 = SAFE_SOCKET(AF_INET, SOCK_STREAM, IPPROTO_TCP);
-- 
2.55.0


-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2026-10-14 11:23 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-14  7:56 [LTP] [PATCH v1] syscalls/connect02: Handle IPV6_ADDRFORM removal and listen() EINVAL Ramesh Chhetri
2026-10-14 11:22 ` [LTP] " linuxtestproject.agent

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.