2024-04-17 15:22:33

by Nathan Chancellor

[permalink] [raw]
Subject: tools/testing/selftests/clone3/clone3_set_tid.c appears to always pass?

Hi Christian,

I am looking at tools/testing/selftests/clone3/clone3_set_tid.c as part
of a patch to clean up the uses of 'return ksft_exit_...();' throughout
the selftests (as they call exit() so they do not return) and I noticed
that it seems to always pass even when there may have been an error?

if (waitpid(ns_pid, &status, 0) < 0) {
ksft_print_msg("Child returned %s\n", strerror(errno));
ret = -errno;
goto out;
}

...
out:
ret = 0;

return !ret ? ksft_exit_pass() : ksft_exit_fail();
}

Should the ret and out label positions be switched? Alternatively, it
seems like ret and out do not have that many uses, perhaps it would just
be better to call the ksft_exit_...() directly in their respective
paths? I am not going to touch it as part of my patch but I felt it was
worth reporting since it appears to have been there since the
introduction of this test in commit 41585bbeeef9 ("selftests: add tests
for clone3() with *set_tid").

Cheers,
Nathan


2024-04-18 11:09:56

by Christian Brauner

[permalink] [raw]
Subject: Re: tools/testing/selftests/clone3/clone3_set_tid.c appears to always pass?

On Wed, Apr 17, 2024 at 08:22:22AM -0700, Nathan Chancellor wrote:
> Hi Christian,
>
> I am looking at tools/testing/selftests/clone3/clone3_set_tid.c as part
> of a patch to clean up the uses of 'return ksft_exit_...();' throughout
> the selftests (as they call exit() so they do not return) and I noticed
> that it seems to always pass even when there may have been an error?
>
> if (waitpid(ns_pid, &status, 0) < 0) {
> ksft_print_msg("Child returned %s\n", strerror(errno));
> ret = -errno;
> goto out;
> }
>
> ...
> out:
> ret = 0;
>
> return !ret ? ksft_exit_pass() : ksft_exit_fail();
> }
>
> Should the ret and out label positions be switched? Alternatively, it
> seems like ret and out do not have that many uses, perhaps it would just
> be better to call the ksft_exit_...() directly in their respective
> paths? I am not going to touch it as part of my patch but I felt it was
> worth reporting since it appears to have been there since the
> introduction of this test in commit 41585bbeeef9 ("selftests: add tests
> for clone3() with *set_tid").

Uh, good point. Let me Cc the original author.