public inbox for ltp@lists.linux.it
 help / color / mirror / Atom feed
From: Petr Vorel <pvorel@suse.cz>
To: Cyril Hrubis <chrubis@suse.cz>
Cc: ltp@lists.linux.it
Subject: Re: [LTP] [PATCH v2] Introduce ioctl_pidfd_get_info_supported() function
Date: Tue, 23 Sep 2025 13:39:12 +0200	[thread overview]
Message-ID: <20250923113912.GA15673@pevik> (raw)
In-Reply-To: <aNKBrcI4ZuHL8RE0@yuki.lan>

Hi Avinesh, Cyril,

...
> >  	memset(&info, 0, sizeof(struct pidfd_info));
> > -	info.mask = PIDFD_INFO_EXIT;

> We have to keep the PIDFD_INFO_EXIT in the mask, otherwise it will never
> be set back by the kernel.

+1, I'm sorry to overlook this change.

> >  	pid = SAFE_FORK();
> >  	if (!pid)
> > @@ -31,23 +28,39 @@ static inline int ioctl_pidfd_info_exit_supported(void)
> >  	SAFE_WAITPID(pid, NULL, 0);

> >  	ret = ioctl(pidfd, PIDFD_GET_INFO, &info);
> > +	SAFE_CLOSE(pidfd);
> > +
> >  	if (ret == -1) {
> > -		/* - ENOTTY: old kernels not implementing fs/pidfs.c:pidfd_ioctl
> > -		 * - EINVAL: until v6.13 kernel
> > -		 * - ESRCH: all kernels between v6.13 and v6.15
> > +		/* - ENOTTY: kernel too old, ioctl(PIDFD_GET_INFO) not implemented; return -1 */
> > +		if (errno == ENOTTY)
> > +			return -1;
> > +
> > +		/* - EINVAL: ioctl(PIDFD_GET_INFO) exists but invalid args
> > +		 * - ESRCH: ioctl(PIDFD_GET_INFO) exists but task already exited
> > +		 * both mean supported, but info.mask is not set; return 0
> >  		 */
> > -		if (errno != ENOTTY &&
> > -			errno != EINVAL &&
> > -			errno != ESRCH)
> > -			tst_brk(TBROK | TERRNO, "ioctl error");
> > -	} else {
> > -		if (info.mask & PIDFD_INFO_EXIT)
> > -			supported = 1;
> > +		if (errno == EINVAL || errno == ESRCH)
> > +			return 0;

> If we do not pass the PIDFD_INFO_EXIT above we will end up with ESRCH
> here all the time.

+1 (again, I'm sorry to overlook it).

> Generally I do not like this code that much, since we depend on the fact
> that we get ESCHR from the syscall if PIDFD_INFO_EXIT is not
> implemented. Without the PIDFD_INFO_EXIT flag the pidfd_info() syscall
> is supposed to work on a process before it's waited for and
> PIDFD_INFO_EXIT does not work before the process is waited for, mixing
> these two checks is a bit ugly.

Avinesh, I'm sorry, I see my suggestion to reuse code to detect PIDFD_INFO_EXIT
for checking PIDFD_GET_INFO was not a good idea. It'll be clearer to have them
separated.

BTW although ioctl_pidfd_info_exit_supported() should be kept as is, it does not
harm to use bool for it. But that's not related to this fix.

Kind regards,
Petr

-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

  reply	other threads:[~2025-09-23 11:39 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-09-22 20:39 [LTP] [PATCH] Introduce ioctl_pidfd_get_info_supported() function Avinesh Kumar
2025-09-22 21:07 ` Petr Vorel
2025-09-23  7:51   ` [LTP] [PATCH v2] " Avinesh Kumar
2025-09-23  9:43     ` Petr Vorel
2025-09-23 11:17     ` Cyril Hrubis
2025-09-23 11:39       ` Petr Vorel [this message]
2025-09-23 11:49         ` Cyril Hrubis
2025-09-23 15:03           ` [LTP] [PATCH v3] " Avinesh Kumar
2025-09-23 18:44             ` Petr Vorel
2025-09-24  8:40               ` Cyril Hrubis
2025-09-24 20:29                 ` [LTP] [PATCH v4] " Avinesh Kumar
2025-09-25  2:05                   ` Li Wang via ltp
2025-09-25  2:44                   ` Li Wang via ltp
2025-09-25  8:19                     ` [LTP] [PATCH v5] " Avinesh Kumar
2025-09-25 11:45                       ` Petr Vorel
2025-09-25 12:15                       ` Petr Vorel
2025-09-25  6:54                   ` [LTP] [PATCH v4] " Cyril Hrubis
2025-09-24  8:34             ` [LTP] [PATCH v3] " Cyril Hrubis
2025-09-24 20:30               ` Avinesh Kumar

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=20250923113912.GA15673@pevik \
    --to=pvorel@suse.cz \
    --cc=chrubis@suse.cz \
    --cc=ltp@lists.linux.it \
    /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