[PATCH vfs-7.5.bpf v2 0/3] bpf: Add bpf_path_getattr()
From: Anastasios Papagiannis
Date: Mon Nov 02 2026 - 05:51:08 EST
Userspace code can populate BPF maps using file identities obtained from
stat() and related system calls. BPF LSM programs need matching inode and
device numbers to look up those entries. Reading inode fields directly can
give different values on overlayfs and miss filesystem-specific getattr
behavior.
bpf_real_data_inode() resolves the inode hosting a file's data, whose
identity and metadata can differ from those reported by stat() and related
system calls on overlayfs. It does not invoke the filesystem's getattr
operation.
This series adds bpf_path_getattr() for sleepable LSM programs. It takes a
trusted path and calls vfs_getattr_nosec() to avoid calling back into
security_inode_getattr().
The kfunc returns struct kstat. Inode and device identity follow the
filesystem's getattr operation.
Selftests compare basic fields with statx() on tmpfs and on overlayfs
before and after copy-up, accounting for device encoding, and exercise
verifier restrictions. The series also updates the relevant documentation.
Changes in v2:
- Use a thin vfs_getattr_nosec() wrapper returning struct kstat. (Alexei)
- Remove struct bpf_file_stat. (Alexei)
- Update the documentation and tests.
- Rebase onto vfs-7.5.bpf for merging through the VFS tree. (Daniel)
v1:
https://lore.kernel.org/bpf/20261029095952.44833-1-tasos.papagiannnis@xxxxxxxxx/
Anastasios Papagiannis (3):
bpf: Add bpf_path_getattr()
docs/bpf: Document bpf_path_getattr()
selftests/bpf: Test bpf_path_getattr()
Documentation/bpf/fs_kfuncs.rst | 13 ++
fs/bpf_fs_kfuncs.c | 38 +++-
.../selftests/bpf/prog_tests/path_getattr.c | 162 ++++++++++++++++++
.../selftests/bpf/progs/path_getattr.c | 42 +++++
.../bpf/progs/verifier_path_getattr.c | 57 ++++++
5 files changed, 311 insertions(+), 1 deletion(-)
create mode 100644 tools/testing/selftests/bpf/prog_tests/path_getattr.c
create mode 100644 tools/testing/selftests/bpf/progs/path_getattr.c
create mode 100644 tools/testing/selftests/bpf/progs/verifier_path_getattr.c
base-commit: 6628e7d4c6b25c8d18f1345e3a20d21829aae7e4
--
2.56.0