From 1cc7fe1936bf5992f7a0934bf7af2509f4d7d442 Mon Sep 17 00:00:00 2001 From: Andrea Righi Date: Mon, 15 Nov 2021 17:52:27 +0100 Subject: [PATCH] UBUNTU: SAUCE: selftests/seccomp: fix check of fds being assigned There might be an arbitrary free open fd slot when we run the addfd sub-test, so checking for progressive numbers of file descriptors starting from memfd is not always a reliable check and we could get the following failure: # RUN global.user_notification_addfd ... # seccomp_bpf.c:3989:user_notification_addfd:Expected listener (18) == nextfd++ (9) # user_notification_addfd: Test terminated by assertion Simply check if memfd and listener are valid file descriptors and start counting for progressive file checking with the listener fd. Fixes: 93e720d710df ("selftests/seccomp: More closely track fds being assigned") Signed-off-by: Andrea Righi Acked-by: Christian Brauner (cherry picked from https://lore.kernel.org/all/20211115165227.101124-1-andrea.righi@canonical.com/) Signed-off-by: Andrea Righi --- tools/testing/selftests/seccomp/seccomp_bpf.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/tools/testing/selftests/seccomp/seccomp_bpf.c b/tools/testing/selftests/seccomp/seccomp_bpf.c index 38f651469968..04f0611234d7 100644 --- a/tools/testing/selftests/seccomp/seccomp_bpf.c +++ b/tools/testing/selftests/seccomp/seccomp_bpf.c @@ -4053,18 +4053,17 @@ TEST(user_notification_addfd) /* There may be arbitrary already-open fds at test start. */ memfd = memfd_create("test", 0); ASSERT_GE(memfd, 0); - nextfd = memfd + 1; ret = prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0); ASSERT_EQ(0, ret) { TH_LOG("Kernel does not support PR_SET_NO_NEW_PRIVS!"); } - /* fd: 4 */ /* Check that the basic notification machinery works */ listener = user_notif_syscall(__NR_getppid, SECCOMP_FILTER_FLAG_NEW_LISTENER); - ASSERT_EQ(listener, nextfd++); + ASSERT_GE(listener, 0); + nextfd = listener + 1; pid = fork(); ASSERT_GE(pid, 0);