• Mickaël Salaün's avatar
    selftests/harness: Fix vfork() side effects · f453cc30
    Mickaël Salaün authored
    Setting the time namespace with CLONE_NEWTIME returns -EUSERS if the
    calling thread shares memory with another thread (because of the shared
    vDSO), which is the case when it is created with vfork().
    
    Fix pidfd_setns_test by replacing test harness's vfork() call with a
    clone3() call with CLONE_VFORK, and an explicit sharing of the
    _metadata and self objects.
    
    Replace _metadata->teardown_parent with a new FIXTURE_TEARDOWN_PARENT()
    helper that can replace FIXTURE_TEARDOWN().  This is a cleaner approach
    and it enables to selectively share the fixture data between the child
    process running tests and the parent process running the fixture
    teardown.  This also avoids updating several tests to not rely on the
    self object's copy-on-write property (e.g. storing the returned value of
    a fork() call).
    
    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>
    Reported-by: default avatarkernel test robot <oliver.sang@intel.com>
    Closes: https://lore.kernel.org/oe-lkp/202403291015.1fcfa957-oliver.sang@intel.com
    Fixes: 0710a1a7 ("selftests/harness: Merge TEST_F_FORK() into TEST_F()")
    Reviewed-by: default avatarKees Cook <keescook@chromium.org>
    Link: https://lore.kernel.org/r/20240511171445.904356-10-mic@digikod.netSigned-off-by: default avatarMickaël Salaün <mic@digikod.net>
    f453cc30
fs_test.c 133 KB