Re: [PATCH v2 5/7] selftests/mount: change test to use ksft framework

Eric W. Biederman
2014-09-23T22:41:20Z

Shuah Khan <shuahkh-JPH+aEBZ4P+UEJcrhfAQsw@public.gmane.org> writes:

> Change mount test to use kselftest framework to report
> test results.

Nacked-by: "Eric W. Biederman" <ebiederm-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org>

I am curious did you even run these tests? I can't possibly see how
the tests would have passed with this change. At the very least you
have taken this test from linear to exponential time complexity.

> Signed-off-by: Shuah Khan <shuahkh-JPH+aEBZ4P+UEJcrhfAQsw@public.gmane.org>
> ---
> tools/testing/selftests/mount/unprivileged-remount-test.c | 8 +++++---
> 1 file changed, 5 insertions(+), 3 deletions(-)
>
> diff --git a/tools/testing/selftests/mount/unprivileged-remount-test.c b/tools/testing/selftests/mount/unprivileged-remount-test.c
> index 1b3ff2f..c64d442 100644
> --- a/tools/testing/selftests/mount/unprivileged-remount-test.c
> +++ b/tools/testing/selftests/mount/unprivileged-remount-test.c
> @@ -13,6 +13,8 @@
> #include <stdbool.h>
> #include <stdarg.h>
>
> +#include "../kselftest.h"
> +
> #ifndef CLONE_NEWNS
> # define CLONE_NEWNS 0x00020000
> #endif
> @@ -45,7 +47,7 @@ static void die(char *fmt, ...)
> va_start(ap, fmt);
> vfprintf(stderr, fmt, ap);
> va_end(ap);
> - exit(EXIT_FAILURE);
> + ksft_exit_fail();
> }
>
> static void write_file(char *filename, char *fmt, ...)
> @@ -176,7 +178,7 @@ bool test_unpriv_remount(int mount_flags, int remount_flags, int invalid_flags)
> die("remount of /tmp with invalid flags "
> "succeeded unexpectedly\n");
> }
> - exit(EXIT_SUCCESS);
> + return ksft_exit_pass();

This change is a deep bug.

This exit is a forked child process (not from the test itself). That a
few lines earlier in the test I test the value of in waitpid.

Also in your change commit comment if no where else you should have
called out that you were making a semantic change to the test.

> }
>
> static bool test_unpriv_remount_simple(int mount_flags)
> @@ -238,5 +240,5 @@ int main(int argc, char **argv)
> {
> die("Default atime malfunctions\n");
> }
> - return EXIT_SUCCESS;
> + return ksft_exit_pass();
> }