[PATCH bpf-next 0/5] bpf: Add user memory access kfuncs for mm_struct

Anastasios Papagiannis <[email protected]>
Newsgroups 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 identified by a trusted
struct mm_struct pointer. To support the exec use case, it also marks
linux_binprm->mm as trusted-or-null. This allows BPF LSM programs to
read exec arguments before allowing the exec to continue.

The series also adds selftests covering both kfuncs and the
trusted-or-null annotation.

Anastasios Papagiannis (5):
  mm: Add copy_remote_mm_str()
  bpf: Add user memory access kfuncs for mm_struct
  bpf: Mark linux_binprm->mm as trusted-or-null
  selftests/bpf: Test trusted-or-null linux_binprm->mm
  selftests/bpf: Test mm_struct user memory kfuncs with linux_binprm

 include/linux/mm.h                            |  2 +
 kernel/bpf/helpers.c                          |  2 +
 kernel/bpf/verifier.c                         |  5 ++
 kernel/trace/bpf_trace.c                      | 83 +++++++++++++++++++
 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 | 77 +++++++++++++++++
 tools/testing/selftests/bpf/progs/lsm.c       |  5 +-
 .../selftests/bpf/progs/verifier_lsm.c        | 31 +++++++
 10 files changed, 304 insertions(+), 3 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: d114bb98936770c501c958bf2bc5fb6b7c0bad7b
-- 
2.55.0
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.