[LTP] [PATCH v1] syscalls/connect02: Handle IPV6_ADDRFORM removal and listen() EINVAL
Ramesh Chhetri
rameshch@linux.ibm.com
Wed Oct 14 09:56:16 CEST 2026
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
More information about the ltp
mailing list