selftests/harness: Fix interleaved scheduling leading to race conditions

Fix a race condition when running several FIXTURE_TEARDOWN() managing
the same resource.  This fixes a race condition in the Landlock file
system tests when creating or unmounting the same directory.

Using clone3() with CLONE_VFORK guarantees that the child and grandchild
test processes are sequentially scheduled.  This is implemented with a
new clone3_vfork() helper replacing the fork() call.

This avoids triggering this error in __wait_for_test():
  Test ended in some other way [127]

Cc: Christian Brauner <>
Cc: David S. Miller <>
Cc: Günther Noack <>
Cc: Jakub Kicinski <>
Cc: Mark Brown <>
Cc: Shuah Khan <>
Cc: Will Drewry <>
Fixes: 41cca0542d7c ("selftests/harness: Fix TEST_F()'s vfork handling")
Reviewed-by: Kees Cook <>
Signed-off-by: Mickaël Salaün <>
1 file changed