Currently this test always returs zero code and a child process returns non-zero code only if the last testcase failed.
Cc: Shuah Khan <shua...@osg.samsung.com> Cc: Cyrill Gorcunov <gorcu...@openvz.org> Signed-off-by: Andrey Vagin <ava...@openvz.org> --- tools/testing/selftests/kcmp/kcmp_test.c | 16 ++++++++++------ tools/testing/selftests/kselftest.h | 12 ++++++++++++ 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/tools/testing/selftests/kcmp/kcmp_test.c b/tools/testing/selftests/kcmp/kcmp_test.c index a5a4da8..42a40c6 100644 --- a/tools/testing/selftests/kcmp/kcmp_test.c +++ b/tools/testing/selftests/kcmp/kcmp_test.c @@ -97,13 +97,17 @@ int main(int argc, char **argv) ksft_print_cnts(); - if (ret) - ksft_exit_fail(); - else - ksft_exit_pass(); + return ksft_exit(); + } + + status = -1; + if (waitpid(pid2, &status, 0) != pid2) { + perror("Unable to wait the child\n"); + return ksft_exit_fail(); } - waitpid(pid2, &status, P_ALL); + if (WIFEXITED(status)) + return WEXITSTATUS(status); - return ksft_exit_pass(); + return ksft_exit_fail(); } diff --git a/tools/testing/selftests/kselftest.h b/tools/testing/selftests/kselftest.h index 572c888..a0ec8b8 100644 --- a/tools/testing/selftests/kselftest.h +++ b/tools/testing/selftests/kselftest.h @@ -58,5 +58,17 @@ static inline int ksft_exit_skip(void) { exit(4); } +static inline int ksft_exit(void) +{ + if (ksft_cnt.ksft_fail) + return ksft_exit_fail(); + if (ksft_cnt.ksft_xpass) + return ksft_exit_xpass(); + if (ksft_cnt.ksft_xskip) + return ksft_exit_skip(); + if (ksft_cnt.ksft_xfail) + return ksft_exit_xfail(); + ksft_exit_pass(); +} #endif /* __KSELFTEST_H */ -- 2.1.0 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/