bpf: Add tests for task_local_storage
authorKP Singh <kpsingh@google.com>
Fri, 6 Nov 2020 10:37:46 +0000 (10:37 +0000)
committerAlexei Starovoitov <ast@kernel.org>
Fri, 6 Nov 2020 16:08:38 +0000 (08:08 -0800)
commit9cde3beeadb311d4b435a7d28d5ab72bcc5de65d
tree89ba3159e7b5be9c9a4ba0e1ff139fefbd6b3e97
parenta367efa71b3f5a53281ca9772f8bf43166dfdf5f
bpf: Add tests for task_local_storage

The test exercises the syscall based map operations by creating a pidfd
for the current process.

For verifying kernel / LSM functionality, the test implements a simple
MAC policy which denies an executable from unlinking itself. The LSM
program bprm_committed_creds sets a task_local_storage with a pointer to
the inode. This is then used to detect if the task is trying to unlink
itself in the inode_unlink LSM hook.

The test copies /bin/rm to /tmp and executes it in a child thread with
the intention of deleting itself. A successful test should prevent the
the running executable from deleting itself.

The bpf programs are also updated to call bpf_spin_{lock, unlock} to
trigger the verfier checks for spin locks.

The temporary file is cleaned up later in the test.

Signed-off-by: KP Singh <kpsingh@google.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Acked-by: Martin KaFai Lau <kafai@fb.com>
Link: https://lore.kernel.org/bpf/20201106103747.2780972-9-kpsingh@chromium.org
tools/testing/selftests/bpf/prog_tests/test_local_storage.c
tools/testing/selftests/bpf/progs/local_storage.c