* [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
* Re: [LTP] syscalls/connect02: Handle IPV6_ADDRFORM removal and listen() EINVAL
2026-10-14 7:56 [LTP] [PATCH v1] syscalls/connect02: Handle IPV6_ADDRFORM removal and listen() EINVAL Ramesh Chhetri
@ 2026-10-14 11:22 ` linuxtestproject.agent
0 siblings, 0 replies; 2+ messages in thread
From: linuxtestproject.agent @ 2026-10-14 11:22 UTC (permalink / raw)
To: Ramesh Chhetri; +Cc: ltp
Hi Ramesh,
On Wed, 14 Oct 2026 09:56:16 +0200, Ramesh Chhetri wrote:
> syscalls/connect02: Handle IPV6_ADDRFORM removal and listen() EINVAL
> @@ -91,6 +91,14 @@ static void run(void)
> + if (TST_ERR == ENOPROTOOPT || TST_ERR == EOPNOTSUPP) {
> + tst_brk(TCONF | TTERRNO,
> + "IPV6_ADDRFORM is removed/unsupported by this kernel");
High: A kernel containing b6f6118901d1 without 82c9ae440857 returns
ENOPROTOOPT here because its TCP branch leaves retv at -ENOPROTOOPT.
This turns the existing regression check's TFAIL into TCONF.
Distinguish removal, for example with getsockopt(IPV6_ADDRFORM) on fd
before closing it, and retain TFAIL when the option still exists.
> @@ -104,7 +112,15 @@ static void run(void)
> + if (TST_ERR == EINVAL) {
> + SAFE_CLOSE(fd);
> + SAFE_CLOSE(confd1);
> + continue;
> + }
Medium: When 8cc3aef0cb19 rejects this transition, all 1000 iterations take
this branch and the function reports TPASS without reaching the second
connect()/accept() that exercises CVE-2018-9568.
Report TCONF when the transition is unavailable instead of silently
continuing to a pass.
Verdict - Needs revision
---
Note:
The agent can sometimes produce false positives although often its
findings are genuine. If you find issues with the review, please
comment this email or ignore the suggestions.
Regards,
LTP AI Reviewer
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply [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.