:p
atchew
Login
From: Geliang Tang <tanggeliang@kylinos.cn> Fix the pidfd leak in kselftest_harness.h's __wait_for_test() where childfd = syscall(__NR_pidfd_open, t->pid, 0) is never closed. Fixes: 73a3cde97677 ("selftests: harness: Implement test timeouts through pidfd") Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn> --- Hi, While adding more TLS selftests for MPTCP KTLS development, a segmentation fault occurred. Debugging revealed that the accept() failure was due to MPTCP tests requiring over 1024 file descriptors simultaneously. I initially raised the limit to 4096 in [1], but sashiko noted that the real issue was a pidfd leak in kselftest_harness.h's __wait_for_test(). Hence, this fix addresses that. Thanks, -Geliang [1] https://patchwork.kernel.org/project/mptcp/patch/ced184831757eaae9e690f65d799809ed22cae28.1776469069.git.tanggeliang@kylinos.cn/ --- tools/testing/selftests/kselftest_harness.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/kselftest_harness.h b/tools/testing/selftests/kselftest_harness.h index XXXXXXX..XXXXXXX 100644 --- a/tools/testing/selftests/kselftest_harness.h +++ b/tools/testing/selftests/kselftest_harness.h @@ -XXX,XX +XXX,XX @@ static void __wait_for_test(struct __test_metadata *t) fprintf(TH_LOG_STREAM, "# %s: unable to wait on child pidfd\n", t->name); - return; + goto out; } else if (ret == 0) { timed_out = true; /* signal process group */ @@ -XXX,XX +XXX,XX @@ static void __wait_for_test(struct __test_metadata *t) fprintf(TH_LOG_STREAM, "# %s: Failed to wait for PID %d (errno: %d)\n", t->name, t->pid, errno); - return; + goto out; } if (timed_out) { @@ -XXX,XX +XXX,XX @@ static void __wait_for_test(struct __test_metadata *t) t->name, status); } +out: + close(childfd); } static void test_harness_list_tests(void) -- 2.51.0
From: Geliang Tang <tanggeliang@kylinos.cn> Fix the pidfd leak in kselftest_harness.h's __wait_for_test() where childfd = syscall(__NR_pidfd_open, t->pid, 0) is never closed. Fixes: 73a3cde97677 ("selftests: harness: Implement test timeouts through pidfd") Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn> --- v2: - move close() directly after poll() as Thomas suggested. Hi, While adding more TLS selftests for MPTCP KTLS development, a segmentation fault occurred. Debugging revealed that the accept() failure was due to MPTCP tests requiring over 1024 file descriptors simultaneously. I initially raised the limit to 4096 in [1], but sashiko noted that the real issue was a pidfd leak in kselftest_harness.h's __wait_for_test(). Hence, this fix addresses that. Thanks, -Geliang [1] https://patchwork.kernel.org/project/mptcp/patch/ced184831757eaae9e690f65d799809ed22cae28.1776469069.git.tanggeliang@kylinos.cn/ --- tools/testing/selftests/kselftest_harness.h | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/testing/selftests/kselftest_harness.h b/tools/testing/selftests/kselftest_harness.h index XXXXXXX..XXXXXXX 100644 --- a/tools/testing/selftests/kselftest_harness.h +++ b/tools/testing/selftests/kselftest_harness.h @@ -XXX,XX +XXX,XX @@ static void __wait_for_test(struct __test_metadata *t) poll_child.fd = childfd; poll_child.events = POLLIN; ret = poll(&poll_child, 1, t->timeout * 1000); + close(childfd); if (ret == -1) { t->exit_code = KSFT_FAIL; fprintf(TH_LOG_STREAM, -- 2.51.0