selftests: vDSO: ensure vgetrandom works in a time namespace
authorJason A. Donenfeld <Jason@zx2c4.com>
Thu, 5 Sep 2024 17:17:24 +0000 (19:17 +0200)
committerJason A. Donenfeld <Jason@zx2c4.com>
Fri, 13 Sep 2024 15:28:35 +0000 (17:28 +0200)
commit2aec90036dcd2cb7047a6e28625fba6c64756665
treef3d2dfde755468d3ea9737bce23ff847a2cb4e7f
parent33ffa2dd0de28ded1fa856b3fb9cbf2b873d7dd0
selftests: vDSO: ensure vgetrandom works in a time namespace

After verifying that vDSO getrandom does work, which ensures that the
RNG is initialized, test to see if it also works inside of a time
namespace. This is important to test, because the vvar pages get
swizzled around there. If the arch code isn't careful, the RNG will
appear uninitialized inside of a time namespace.

Because broken code makes the RNG appear uninitialized, test that
everything works by issuing a call to vgetrandom from a fork in a time
namespace, and use ptrace to ensure that the actual syscall getrandom
doesn't get called. If it doesn't get called, then the test succeeds.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
tools/testing/selftests/vDSO/vdso_test_getrandom.c