• Mickaël Salaün's avatar
    selftests/harness: Fix TEST_F()'s vfork handling · 41cca054
    Mickaël Salaün authored
    Always run fixture setup in the grandchild process, and by default also
    run the teardown in the same process.  However, this change makes it
    possible to run the teardown in a parent process when
    _metadata->teardown_parent is set to true (e.g. in fixture setup).
    
    Fix TEST_SIGNAL() by forwarding grandchild's signal to its parent.  Fix
    seccomp tests by running the test setup in the parent of the test
    thread, as expected by the related test code.  Fix Landlock tests by
    waiting for the grandchild before processing _metadata.
    
    Use of exit(3) in tests should be OK because the environment in which
    the vfork(2) call happen is already dedicated to the running test (with
    flushed stdio, setpgrp() call), see __run_test() and the call to fork(2)
    just before running the setup/test/teardown.  Even if the test
    configures its own exit handlers, they will not be run by the parent
    because it never calls exit(3), and the test function either ends with a
    call to _exit(2) or a signal.
    
    Cc: Günther Noack <gnoack@google.com>
    Cc: Shuah Khan <shuah@kernel.org>
    Cc: Will Drewry <wad@chromium.org>
    Fixes: 0710a1a7 ("selftests/harness: Merge TEST_F_FORK() into TEST_F()")
    Reviewed-by: default avatarKees Cook <keescook@chromium.org>
    Tested-by: default avatarKees Cook <keescook@chromium.org>
    Signed-off-by: default avatarMickaël Salaün <mic@digikod.net>
    Reported-by: default avatarMark Brown <broonie@kernel.org>
    Tested-by: default avatarMark Brown <broonie@kernel.org>
    Link: https://lore.kernel.org/r/20240305201029.1331333-1-mic@digikod.netSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    41cca054
fs_test.c 133 KB