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 <andrea.righi@xxxxxxxxxxxxx> --- 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 d425688cf59c..4f37153378a1 100644 --- a/tools/testing/selftests/seccomp/seccomp_bpf.c +++ b/tools/testing/selftests/seccomp/seccomp_bpf.c @@ -3975,18 +3975,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); -- 2.32.0