Re: [PATCH bpf-next v1 3/4] bpf: Reject programs that try to load __percpu memory.

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

 





On 3/4/22 11:16 AM, Hao Luo wrote:
With the introduction of the btf_type_tag "percpu", we can add a
MEM_PERCPU to identify those pointers that point to percpu memory.
The ability of differetiating percpu pointers from regular memory
pointers have two benefits:

  1. It forbids unexpected use of percpu pointers, such as direct loads.
     In kernel, there are special functions used for accessing percpu
     memory. Directly loading percpu memory is meaningless. We already
     have BPF helpers like bpf_per_cpu_ptr() and bpf_this_cpu_ptr() that
     wrap the kernel percpu functions. So we can now convert percpu
     pointers into regular pointers in a safe way.

  2. Previously, bpf_per_cpu_ptr() and bpf_this_cpu_ptr() only work on
     PTR_TO_PERCPU_BTF_ID, a special reg_type which describes static
     percpu variables in kernel (we rely on pahole to encode them into
     vmlinux BTF). Now, since we can identify __percpu tagged pointers,
     we can also identify dynamically allocated percpu memory as well.
     It means we can use bpf_xxx_cpu_ptr() on dynamic percpu memory.
     This would be very convenient when accessing fields like
     "cgroup->rstat_cpu".

Cc: Yonghong Song <yhs@xxxxxx>
Signed-off-by: Hao Luo <haoluo@xxxxxxxxxx>

Acked-by: Yonghong Song <yhs@xxxxxx>



[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux