Re: tools/testing/selftests/clone3/clone3_set_tid.c appears to always pass?

From: Christian Brauner
Date: Thu Apr 18 2024 - 07:09:56 EST


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.