mirror of
https://github.com/linux-msm/laptops-kernel.git
synced 2026-08-13 14:19:53 -07:00
selftests/namespaces: Skip efault tests when listns() is not available
When listns() is not implemented the iterator child detects ENOSYS and exits cleanly with status PIDFD_SKIP before the parent has a chance to signal it. The parent sends SIGKILL (which is a harmless no-op at that point) and then calls waitpid(), obtaining a normal-exit status. The subsequent ASSERT_TRUE(WIFSIGNALED(status)) therefore fails, causing the three EFAULT-focused tests to report FAIL rather than SKIP on kernels that do not yet carry listns() support. After collecting the iterator's exit status, check whether it exited with PIDFD_SKIP and issue a SKIP verdict in that case, consistent with the behaviour of every other listns test that already handles ENOSYS correctly. Signed-off-by: Ricardo B. Marlière <rbm@suse.com> Link: https://patch.msgid.link/20260407-selftests-namespaces_fixes-v1-3-59109909d88b@suse.com Signed-off-by: Christian Brauner <brauner@kernel.org>
This commit is contained in:
@@ -176,6 +176,12 @@ TEST(listns_partial_fault_with_ns_cleanup)
|
||||
ASSERT_EQ(ret, iter_pid);
|
||||
close(iter_pidfd);
|
||||
|
||||
/* If listns() is not supported the iterator exits cleanly via ENOSYS */
|
||||
if (WIFEXITED(status) && WEXITSTATUS(status) == PIDFD_SKIP) {
|
||||
munmap(map, page_size);
|
||||
SKIP(return, "listns() not supported");
|
||||
}
|
||||
|
||||
/* Should have been killed */
|
||||
ASSERT_TRUE(WIFSIGNALED(status));
|
||||
ASSERT_EQ(WTERMSIG(status), SIGKILL);
|
||||
@@ -386,6 +392,12 @@ TEST(listns_late_fault_with_ns_cleanup)
|
||||
ASSERT_EQ(ret, iter_pid);
|
||||
close(iter_pidfd);
|
||||
|
||||
/* If listns() is not supported the iterator exits cleanly via ENOSYS */
|
||||
if (WIFEXITED(status) && WEXITSTATUS(status) == PIDFD_SKIP) {
|
||||
munmap(map, page_size);
|
||||
SKIP(return, "listns() not supported");
|
||||
}
|
||||
|
||||
/* Should have been killed */
|
||||
ASSERT_TRUE(WIFSIGNALED(status));
|
||||
ASSERT_EQ(WTERMSIG(status), SIGKILL);
|
||||
@@ -522,6 +534,12 @@ TEST(listns_mnt_ns_cleanup_on_fault)
|
||||
ASSERT_EQ(ret, iter_pid);
|
||||
close(iter_pidfd);
|
||||
|
||||
/* If listns() is not supported the iterator exits cleanly via ENOSYS */
|
||||
if (WIFEXITED(status) && WEXITSTATUS(status) == PIDFD_SKIP) {
|
||||
munmap(map, page_size);
|
||||
SKIP(return, "listns() not supported");
|
||||
}
|
||||
|
||||
/* Should have been killed */
|
||||
ASSERT_TRUE(WIFSIGNALED(status));
|
||||
ASSERT_EQ(WTERMSIG(status), SIGKILL);
|
||||
|
||||
Reference in New Issue
Block a user