From: Avinesh Kumar via ltp <ltp@lists.linux.it>
To: ltp@lists.linux.it
Subject: [LTP] [PATCH] setsockopt08: Handle EPERM from disabled compat xtables in userns
Date: Fri, 28 Aug 2026 11:57:23 +0200 [thread overview]
Message-ID: <20260828095724.194900-1-avinesh.kumar@suse.com> (raw)
From: Avinesh Kumar <avinesh.kumar@suse.com>
Since kernel commit ec1806a730a1 ("netfilter: x_tables: disable
32bit compat interface in user namespaces"), the compat xtables ABI
returns EPERM when called from inside a non-init user namespace,
regardless of privileges held there. Since the test isolates itself
with tst_setup_netns(), it always hits this path on 32-bit/compat
runs and can no longer reach the CVE-2021-22555 code path
setsockopt08.c:139: TFAIL: setsockopt(3, IPPROTO_IP, IPT_SO_SET_REPLACE, 0xf7f0c800, 1): EPERM (1)
So treat EPERM as TCONF instead of TFAIL.
Signed-off-by: Avinesh Kumar <avinesh.kumar@suse.com>
---
testcases/kernel/syscalls/setsockopt/setsockopt08.c | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/testcases/kernel/syscalls/setsockopt/setsockopt08.c b/testcases/kernel/syscalls/setsockopt/setsockopt08.c
index 37051512517a..3d1838f6ed73 100644
--- a/testcases/kernel/syscalls/setsockopt/setsockopt08.c
+++ b/testcases/kernel/syscalls/setsockopt/setsockopt08.c
@@ -82,6 +82,13 @@
* * the kernel will insert four bytes of padding
* after the match and target entries each.
* * sizeof(struct xt_entry_target) = 32
+ *
+ * Since kernel commit ec1806a730a1 ("netfilter: x_tables: disable
+ * 32bit compat interface in user namespaces") in v7.2, the compat
+ * xtables ABI is rejected with EPERM inside a non-init user namespace.
+ * As this test runs isolated via tst_setup_netns(), it can no longer
+ * reach the vulnerable code path on such kernels and reports TCONF
+ * instead.
*/
#include <netinet/in.h>
@@ -135,6 +142,11 @@ void run(void)
if (TST_RET == -1 && TST_ERR == ENOPROTOOPT)
tst_brk(TCONF | TTERRNO, res_fmt_str, fd, buffer);
+ if (TST_RET == -1 && TST_ERR == EPERM && tst_is_compat_mode()) {
+ tst_res(TINFO, "32bit compat xtables interface is disabled in user namespaces since commit ec1806a730a1");
+ tst_brk(TCONF | TTERRNO, res_fmt_str, fd, buffer);
+ }
+
result = (TST_RET == -1 && TST_ERR == EINVAL) ? TPASS : TFAIL;
tst_res(result | TTERRNO, res_fmt_str, fd, buffer);
@@ -163,6 +175,7 @@ static struct tst_test test = {
},
.tags = (const struct tst_tag[]) {
{"linux-git", "b29c457a6511435960115c0f548c4360d5f4801d"},
+ {"linux-git", "ec1806a730a1c0b3d68a7f9afe81514fb0dd7991"},
{"CVE", "2021-22555"},
{}
}
--
2.55.0
--
Mailing list info: https://lists.linux.it/listinfo/ltp
next reply other threads:[~2026-08-28 9:57 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-28 9:57 Avinesh Kumar via ltp [this message]
2026-08-28 11:16 ` [LTP] [PATCH] setsockopt08: Handle EPERM from disabled compat xtables in userns Andrea Cervesato via ltp
2026-08-28 11:16 ` Andrea Cervesato via ltp
2026-08-28 11:25 ` Andrea Cervesato via ltp
2026-08-28 11:30 ` [LTP] " linuxtestproject.agent
2026-08-28 11:33 ` Andrea Cervesato via ltp
2026-09-03 13:09 ` [LTP] [PATCH] " Andrea Cervesato via ltp
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260828095724.194900-1-avinesh.kumar@suse.com \
--to=ltp@lists.linux.it \
--cc=avinesh.kumar@suse.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.