[PATCH bpf-next 0/3] bpf: Add user memory access kfuncs for linux_binprm
Anastasios Papagiannis <[email protected]>
| Newsgroups | org.kernel.vger.linux-fsdevel,org.kernel.vger.bpf,org.kernel.vger.linux-kernel,org.kvack.linux-mm |
|---|---|
| Message-ID | <[email protected]> |
During exec, argument and environment strings are copied into the new address space held by struct linux_binprm before that address space is installed on the task_struct. Existing eBPF user memory helpers only support reading from the old address space (i.e. current process) and for this reason programs cannot access these strings from the bprm_check_security LSM hook. This series adds two sleepable BPF kfuncs for copying bytes or NUL-terminated strings from the address space held by struct linux_binprm. This allows BPF LSM programs to inspect exec arguments before allowing the exec to continue. The series also adds selftests covering both kfuncs. Anastasios Papagiannis (3): mm: Add copy_remote_mm_str() bpf: Add user memory access kfuncs for linux_binprm selftests/bpf: Test linux_binprm user memory kfuncs fs/bpf_fs_kfuncs.c | 112 ++++++++++++++++++ include/linux/mm.h | 2 + mm/memory.c | 25 +++- mm/nommu.c | 25 +++- .../bpf/prog_tests/copy_from_user_bprm.c | 52 ++++++++ .../selftests/bpf/progs/copy_from_user_bprm.c | 74 ++++++++++++ 6 files changed, 288 insertions(+), 2 deletions(-) create mode 100644 tools/testing/selftests/bpf/prog_tests/copy_from_user_bprm.c create mode 100644 tools/testing/selftests/bpf/progs/copy_from_user_bprm.c base-commit: 07cb86aa50816b070b99c89bf948762ef035a1f2 -- 2.55.0