diff mbox series

Linux: Terminate subprocess on late failure in tst-pidfd (bug 29485)

Message ID 87tu6ejcbe.fsf@oldenburg.str.redhat.com
State New
Headers show
Series Linux: Terminate subprocess on late failure in tst-pidfd (bug 29485) | expand

Commit Message

Florian Weimer Aug. 15, 2022, 5:38 a.m. UTC
---
 sysdeps/unix/sysv/linux/tst-pidfd.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

Comments

Carlos O'Donell Aug. 15, 2022, 2:23 p.m. UTC | #1
On 8/15/22 01:38, Florian Weimer via Libc-alpha wrote:
> ---
>  sysdeps/unix/sysv/linux/tst-pidfd.c | 7 +++++--
>  1 file changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/sysdeps/unix/sysv/linux/tst-pidfd.c b/sysdeps/unix/sysv/linux/tst-pidfd.c
> index 037af22290..5711d1c312 100644
> --- a/sysdeps/unix/sysv/linux/tst-pidfd.c
> +++ b/sysdeps/unix/sysv/linux/tst-pidfd.c
> @@ -147,8 +147,11 @@ do_test (void)
>         may be denied if the process doesn't have CAP_SYS_PTRACE or
>         if a LSM security_ptrace_access_check denies access.  */
>      if (fd == -1 && errno == EPERM)
> -      FAIL_UNSUPPORTED ("don't have permission to use pidfd_getfd on pidfd, "
> -			"skipping test");
> +      {
> +	TEST_COMPARE (pidfd_send_signal (pidfd, SIGKILL, NULL, 0), 0);
> +	FAIL_UNSUPPORTED ("don't have permission to use pidfd_getfd on pidfd, "
> +			  "skipping test");
> +      }
>      TEST_VERIFY (fd > 0);
>  
>      char *path = xasprintf ("/proc/%d/fd/%d", pid, remote_fd);
> 
I reviewed the original and missed this. Thanks.

On line 107 we fork the new process.

On line 150 we are testing for the unsupported failure but the child process is still alive.

You add the termination via TEST_COMPARE sending SIGKILL via pidfd_send_signal.

LGTM.

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
diff mbox series

Patch

diff --git a/sysdeps/unix/sysv/linux/tst-pidfd.c b/sysdeps/unix/sysv/linux/tst-pidfd.c
index 037af22290..5711d1c312 100644
--- a/sysdeps/unix/sysv/linux/tst-pidfd.c
+++ b/sysdeps/unix/sysv/linux/tst-pidfd.c
@@ -147,8 +147,11 @@  do_test (void)
        may be denied if the process doesn't have CAP_SYS_PTRACE or
        if a LSM security_ptrace_access_check denies access.  */
     if (fd == -1 && errno == EPERM)
-      FAIL_UNSUPPORTED ("don't have permission to use pidfd_getfd on pidfd, "
-			"skipping test");
+      {
+	TEST_COMPARE (pidfd_send_signal (pidfd, SIGKILL, NULL, 0), 0);
+	FAIL_UNSUPPORTED ("don't have permission to use pidfd_getfd on pidfd, "
+			  "skipping test");
+      }
     TEST_VERIFY (fd > 0);
 
     char *path = xasprintf ("/proc/%d/fd/%d", pid, remote_fd);