• Mickaël Salaün's avatar
    selftests/harness: Fix interleaved scheduling leading to race conditions · a86f1890
    Mickaël Salaün authored
    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 <brauner@kernel.org>
    Cc: David S. Miller <davem@davemloft.net>
    Cc: Günther Noack <gnoack@google.com>
    Cc: Jakub Kicinski <kuba@kernel.org>
    Cc: Mark Brown <broonie@kernel.org>
    Cc: Shuah Khan <shuah@kernel.org>
    Cc: Will Drewry <wad@chromium.org>
    Fixes: 41cca054 ("selftests/harness: Fix TEST_F()'s vfork handling")
    Reviewed-by: default avatarKees Cook <keescook@chromium.org>
    Link: https://lore.kernel.org/r/20240511171445.904356-5-mic@digikod.netSigned-off-by: default avatarMickaël Salaün <mic@digikod.net>
    a86f1890
kselftest_harness.h 33.8 KB