From: Petr Vorel <pvorel@suse.cz>
To: Wake Liu <wakel@google.com>
Cc: ltp@lists.linux.it
Subject: Re: [LTP] [PATCH] listmount04: Detect EBADF behavior dynamically at runtime
Date: Fri, 24 Jul 2026 14:11:14 +0200 [thread overview]
Message-ID: <20260724121114.GB983347@pevik> (raw)
In-Reply-To: <20260724095737.3631000-1-wakel@google.com>
> Upstream commit 78f0e33cd6c9 ("fs/namespace: correctly handle errors
> returned by grab_requested_mnt_ns") changed the errno from EINVAL to
> EBADF when an invalid mount namespace file descriptor is passed to
> listmount(). This change has been backported to various stable kernels
> (e.g., 6.12.59 LTS).
> Instead of hardcoding version checks for every stable backport, probe
> the behavior dynamically in setup() by calling listmount() with an
> invalid fd (-1) and checking the returned errno.
> Signed-off-by: Wake Liu <wakel@google.com>
> ---
> .../kernel/syscalls/listmount/listmount04.c | 27 ++++++++++++++++---
> 1 file changed, 23 insertions(+), 4 deletions(-)
> diff --git a/testcases/kernel/syscalls/listmount/listmount04.c b/testcases/kernel/syscalls/listmount/listmount04.c
> index 919f4c854..f7343608f 100644
> --- a/testcases/kernel/syscalls/listmount/listmount04.c
> +++ b/testcases/kernel/syscalls/listmount/listmount04.c
> @@ -153,16 +153,35 @@ static void run(unsigned int n)
> }
> TST_EXP_FAIL(tst_syscall(__NR_listmount, req, tc->mnt_ids,
> - tc->nr_mnt_ids, tc->flags), tc->exp_errno,
> - "%s", tc->msg);
> + tc->nr_mnt_ids, tc->flags),
> + tc->exp_errno,
> + "%s", tc->msg);
> }
> static void setup(void)
> {
> - if (tst_kvercmp(6, 17, 9) >= 0)
> + mnt_id_req req = {
> + .size = MNT_ID_REQ_SIZE_VER0,
> + .mnt_id = LSMT_ROOT,
> + .mnt_ns_fd = -1,
> + };
> + uint64_t ids[MNT_SIZE];
> +
> + TEST(tst_syscall(__NR_listmount, &req, ids, MNT_SIZE, 0));
I wonder if we should use listmount() from listmount.h.
> + if (TST_RET >= 0)
> + tst_brk(TBROK, "listmount() succeeded unexpectedly with invalid fd");
Maybe we could have TST_EXP_FAIL_ARR_SILENT_BRK() in the future :)
> +
> + if (TST_ERR == EBADF) {
> kver = AFTER_6_17_9;
At this point we may rename macros back to AFTER_6_18 and BEFORE_6_18, with
keeping note that it got backported into stable.
> - else
> + tst_res(TINFO, "Detected kernel with EBADF behavior for invalid mnt_ns_fd");
> + } else if (TST_ERR == EINVAL) {
> kver = BEFORE_6_17_9;
> + tst_res(TINFO, "Detected kernel with EINVAL behavior for invalid mnt_ns_fd");
> + } else if (TST_ERR == ENOSYS) {
> + tst_brk(TCONF, "listmount() syscall not supported");
This is IMHO not supported, because it's part of tst_syscall().
Other than this LGTM.
Reviewed-by: Petr Vorel <pvorel@suse.cz>
Kind regards,
Petr
> + } else {
> + tst_brk(TBROK | TTERRNO, "Unexpected error during probe");
> + }
--
Mailing list info: https://lists.linux.it/listinfo/ltp
prev parent reply other threads:[~2026-07-24 12:11 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-24 9:57 [LTP] [PATCH] listmount04: Detect EBADF behavior dynamically at runtime Wake Liu via ltp
2026-07-24 12:11 ` Petr Vorel [this message]
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=20260724121114.GB983347@pevik \
--to=pvorel@suse.cz \
--cc=ltp@lists.linux.it \
--cc=wakel@google.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox