* [LTP] [PATCH v2] Correctly check if PIDFD_INFO_EXIT is available
@ 2025-07-29 16:39 Andrea Cervesato
2025-07-30 9:35 ` Cyril Hrubis
0 siblings, 1 reply; 4+ messages in thread
From: Andrea Cervesato @ 2025-07-29 16:39 UTC (permalink / raw)
To: ltp
From: Andrea Cervesato <andrea.cervesato@suse.com>
When systems are not having the PIDFD_INFO_EXIT implementation,
ioctl_pidfd testing suite might fail with:
ioctl_pidfd.h:32: TBROK: ioctl(...) failed: ENOTTY (25)
Fix the ioctl_pidfd_info_exit_supported() behavior, considering ENOTTY
error like a sign for not having PIDFD_INFO_EXIT implemented in the
system.
Signed-off-by: Andrea Cervesato <andrea.cervesato@suse.com>
---
Changes in v2:
- close pidfd when PIDFD_INFO_EXIT is supported
- Link to v1: https://lore.kernel.org/r/20250729-ioctl_pidfd_supported-v1-1-985626a0c46b@suse.com
---
testcases/kernel/syscalls/ioctl/ioctl_pidfd.h | 18 ++++++++++++------
1 file changed, 12 insertions(+), 6 deletions(-)
diff --git a/testcases/kernel/syscalls/ioctl/ioctl_pidfd.h b/testcases/kernel/syscalls/ioctl/ioctl_pidfd.h
index 8249ac753cf7fb8a3b749d55c7f0c3b30482c114..72ed3c8ae21bfa462ac76aaa865f5c71ce921e9a 100644
--- a/testcases/kernel/syscalls/ioctl/ioctl_pidfd.h
+++ b/testcases/kernel/syscalls/ioctl/ioctl_pidfd.h
@@ -11,9 +11,10 @@
static inline int ioctl_pidfd_info_exit_supported(void)
{
- int ret = 0;
+ int ret;
pid_t pid;
int pidfd;
+ int supported = 0;
struct pidfd_info info;
if (tst_kvercmp(6, 15, 0) >= 0)
@@ -29,13 +30,18 @@ static inline int ioctl_pidfd_info_exit_supported(void)
pidfd = SAFE_PIDFD_OPEN(pid, 0);
SAFE_WAITPID(pid, NULL, 0);
- SAFE_IOCTL(pidfd, PIDFD_GET_INFO, &info);
- SAFE_CLOSE(pidfd);
+ ret = ioctl(pidfd, PIDFD_GET_INFO, &info);
+ if (ret == -1) {
+ if (errno != ENOTTY)
+ tst_brk(TBROK | TERRNO, "ioctl error");
+ } else {
+ if (info.mask & PIDFD_INFO_EXIT)
+ supported = 1;
+ }
- if (info.mask & PIDFD_INFO_EXIT)
- ret = 1;
+ SAFE_CLOSE(pidfd);
- return ret;
+ return supported;
}
#endif
---
base-commit: 91e6272febf95e19a8300695dfc2089569adf9d8
change-id: 20250729-ioctl_pidfd_supported-437d25a4c382
Best regards,
--
Andrea Cervesato <andrea.cervesato@suse.com>
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [LTP] [PATCH v2] Correctly check if PIDFD_INFO_EXIT is available
2025-07-29 16:39 [LTP] [PATCH v2] Correctly check if PIDFD_INFO_EXIT is available Andrea Cervesato
@ 2025-07-30 9:35 ` Cyril Hrubis
2025-07-30 12:04 ` Andrea Cervesato via ltp
0 siblings, 1 reply; 4+ messages in thread
From: Cyril Hrubis @ 2025-07-30 9:35 UTC (permalink / raw)
To: Andrea Cervesato; +Cc: ltp
Hi!
Reviewed-by: Cyril Hrubis <chrubis@suse.cz>
--
Cyril Hrubis
chrubis@suse.cz
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [LTP] [PATCH v2] Correctly check if PIDFD_INFO_EXIT is available
2025-07-30 9:35 ` Cyril Hrubis
@ 2025-07-30 12:04 ` Andrea Cervesato via ltp
2025-07-30 12:31 ` Andrea Cervesato via ltp
0 siblings, 1 reply; 4+ messages in thread
From: Andrea Cervesato via ltp @ 2025-07-30 12:04 UTC (permalink / raw)
To: Cyril Hrubis, Andrea Cervesato; +Cc: ltp
On 7/30/25 11:35 AM, Cyril Hrubis wrote:
> Hi!
> Reviewed-by: Cyril Hrubis <chrubis@suse.cz>
>
It seems we need to add also a couple of errno checks more.
ioctl(PIDFD_INFO_EXIT ...) starts to fail with EINVAL from a certain
version of the kernel, after introducing `pidfd_ioctl` function in
fs/pidfs.c, while before only ENOTTY was raised.
After the introduction of "cdda1f26e74b - pidfd: add ioctl to retrieve
pid info" in v6.13, the logic inside the kernel changed and we get ESRCH
error due to the introduction of `struct pidfd_info`, but the lack of
PIDFD_INFO_EXIT support: at that specific commit, only PIDFD_INFO_PID is
supported.
This is due to the implementation of `pidfd_ioctl()`, that is not
validating commands before asking for a pid task.
I guess there's either a enhancement to do in the kernel implementation,
or a lack of checks from our side. Since we are talking about 3 versions
of the kernel ago, we should probably verify that kernel doesn't support
PIDFD_INFO_EXIT by looking at the following ioctl() errno:
- ENOTTY
- EINVAL
- ESRCH
- Andrea
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [LTP] [PATCH v2] Correctly check if PIDFD_INFO_EXIT is available
2025-07-30 12:04 ` Andrea Cervesato via ltp
@ 2025-07-30 12:31 ` Andrea Cervesato via ltp
0 siblings, 0 replies; 4+ messages in thread
From: Andrea Cervesato via ltp @ 2025-07-30 12:31 UTC (permalink / raw)
To: Cyril Hrubis, Andrea Cervesato; +Cc: ltp
On 7/30/25 2:04 PM, Andrea Cervesato wrote:
> On 7/30/25 11:35 AM, Cyril Hrubis wrote:
>> Hi!
>> Reviewed-by: Cyril Hrubis <chrubis@suse.cz>
>>
> It seems we need to add also a couple of errno checks more.
> ioctl(PIDFD_INFO_EXIT ...) starts to fail with EINVAL from a certain
> version of the kernel, after introducing `pidfd_ioctl` function in
> fs/pidfs.c, while before only ENOTTY was raised.
>
> After the introduction of "cdda1f26e74b - pidfd: add ioctl to retrieve
> pid info" in v6.13, the logic inside the kernel changed and we get
> ESRCH error due to the introduction of `struct pidfd_info`, but the
> lack of PIDFD_INFO_EXIT support: at that specific commit, only
> PIDFD_INFO_PID is supported.
>
> This is due to the implementation of `pidfd_ioctl()`, that is not
> validating commands before asking for a pid task.
>
> I guess there's either a enhancement to do in the kernel
> implementation, or a lack of checks from our side. Since we are
> talking about 3 versions of the kernel ago, we should probably verify
> that kernel doesn't support PIDFD_INFO_EXIT by looking at the
> following ioctl() errno:
>
> - ENOTTY
> - EINVAL
> - ESRCH
>
> - Andrea
>
The `pidfd_ioctl()` commands check has been introduced in v6.13 with
"8ce352818820 pidfs: check for valid ioctl commands", so the patch v4
that I sent needs to check for ENOIOCTLCMD as well..
- Andrea
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2025-07-30 12:31 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-07-29 16:39 [LTP] [PATCH v2] Correctly check if PIDFD_INFO_EXIT is available Andrea Cervesato
2025-07-30 9:35 ` Cyril Hrubis
2025-07-30 12:04 ` Andrea Cervesato via ltp
2025-07-30 12:31 ` Andrea Cervesato via ltp
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.