Re: [PATCH v9 bpf-next 0/7] Enable writing xattr from BPF programs

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Al Christian and Jan,

Could you please help review this set? The fs side change is
in 1/7 (already reviewed by fs folks) and 6/7.

Thanks,
Song

On Thu, Jan 9, 2025 at 5:13 PM Song Liu <song@xxxxxxxxxx> wrote:
>
> Add support to set and remove xattr from BPF program. Also add
> security.bpf. xattr name prefix.
>
> kfuncs are added to set and remove xattrs with security.bpf. name
> prefix. Update kfuncs bpf_get_[file|dentry]_xattr to read xattrs
> with security.bpf. name prefix. Note that BPF programs can read
> user. xattrs, but not write and remove them.
>
> To pick the right version of kfunc to use, a remap logic is added to
> btf_kfunc_id_set. This helps move some kfunc specific logic off the
> verifier core code. Also use this remap logic to select
> bpf_dynptr_from_skb or bpf_dynptr_from_skb_rdonly.
>
>
> Cover letter of v1 and v2:
>
> Follow up discussion in LPC 2024 [1], that we need security.bpf xattr
> prefix. This set adds "security.bpf." xattr name prefix, and allows
> bpf kfuncs bpf_get_[file|dentry]_xattr() to read these xattrs.
>
> [1] https://lpc.events/event/18/contributions/1940/
>
> Changes v8 => v9
> 1. Fix build for CONFIG_DEBUG_INFO_BTF=n case. (kernel test robot)
>
> v8: https://lore.kernel.org/bpf/20250108225140.3467654-1-song@xxxxxxxxxx/
>
> Changes v7 => v8
> 1. Rebase and resolve conflicts.
>
> v7: https://lore.kernel.org/bpf/20241219221439.2455664-1-song@xxxxxxxxxx/
>
> Changes v6 => v7
> 1. Move btf_kfunc_id_remap() to the right place. (Bug reported by CI)
>
> v6: https://lore.kernel.org/bpf/20241219202536.1625216-1-song@xxxxxxxxxx/
>
> Changes v5 => v6
> 1. Hide _locked version of the kfuncs from vmlinux.h (Alexei)
> 2. Add remap logic to btf_kfunc_id_set and use that to pick the correct
>    version of kfuncs to use.
> 3. Also use the remap logic for bpf_dynptr_from_skb[|_rdonly].
>
> v5: https://lore.kernel.org/bpf/20241218044711.1723221-1-song@xxxxxxxxxx/
>
> Changes v4 => v5
> 1. Let verifier pick proper kfunc (_locked or not _locked)  based on the
>    calling context. (Alexei)
> 2. Remove the __failure test (6/6 of v4).
>
> v4: https://lore.kernel.org/bpf/20241217063821.482857-1-song@xxxxxxxxxx/
>
> Changes v3 => v4
> 1. Do write permission check with inode locked. (Jan Kara)
> 2. Fix some source_inline warnings.
>
> v3: https://lore.kernel.org/bpf/20241210220627.2800362-1-song@xxxxxxxxxx/
>
> Changes v2 => v3
> 1. Add kfuncs to set and remove xattr from BPF programs.
>
> v2: https://lore.kernel.org/bpf/20241016070955.375923-1-song@xxxxxxxxxx/
>
> Changes v1 => v2
> 1. Update comment of bpf_get_[file|dentry]_xattr. (Jiri Olsa)
> 2. Fix comment for return value of bpf_get_[file|dentry]_xattr.
>
> v1: https://lore.kernel.org/bpf/20241002214637.3625277-1-song@xxxxxxxxxx/
>
> Song Liu (7):
>   fs/xattr: bpf: Introduce security.bpf. xattr name prefix
>   selftests/bpf: Extend test fs_kfuncs to cover security.bpf. xattr
>     names
>   bpf: lsm: Add two more sleepable hooks
>   bpf: Extend btf_kfunc_id_set to handle kfunc polymorphism
>   bpf: Use btf_kfunc_id_set.remap logic for bpf_dynptr_from_skb
>   bpf: fs/xattr: Add BPF kfuncs to set and remove xattrs
>   selftests/bpf: Test kfuncs that set and remove xattr from BPF programs
>
>  fs/bpf_fs_kfuncs.c                            | 246 +++++++++++++++++-
>  include/linux/bpf_lsm.h                       |   2 +
>  include/linux/btf.h                           |  20 ++
>  include/linux/btf_ids.h                       |   4 +
>  include/uapi/linux/xattr.h                    |   4 +
>  kernel/bpf/bpf_lsm.c                          |   2 +
>  kernel/bpf/btf.c                              | 117 +++++++--
>  kernel/bpf/verifier.c                         |  31 +--
>  net/core/filter.c                             |  49 +++-
>  tools/testing/selftests/bpf/bpf_kfuncs.h      |   5 +
>  .../selftests/bpf/prog_tests/fs_kfuncs.c      | 162 +++++++++++-
>  .../selftests/bpf/progs/test_get_xattr.c      |  28 +-
>  .../bpf/progs/test_set_remove_xattr.c         | 133 ++++++++++
>  13 files changed, 740 insertions(+), 63 deletions(-)
>  create mode 100644 tools/testing/selftests/bpf/progs/test_set_remove_xattr.c
>
> --
> 2.43.5





[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [NTFS 3]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [NTFS 3]     [Samba]     [Device Mapper]     [CEPH Development]

  Powered by Linux