Re: [PATCH v2 bpf-next 07/10] bpf: add support for passing dynptr pointer to global subprog

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

 



On Tue, 2023-12-12 at 15:25 -0800, Andrii Nakryiko wrote:
> Add ability to pass a pointer to dynptr into global functions.
> This allows to have global subprogs that accept and work with generic
> dynptrs that are created by caller. Dynptr argument is detected based on
> the name of a struct type, if it's "bpf_dynptr", it's assumed to be
> a proper dynptr pointer. Both actual struct and forward struct
> declaration types are supported.
> 
> This is conceptually exactly the same semantics as
> bpf_user_ringbuf_drain()'s use of dynptr to pass a variable-sized
> pointer to ringbuf record. So we heavily rely on CONST_PTR_TO_DYNPTR
> bits of already existing logic in the verifier.
> 
> During global subprog validation, we mark such CONST_PTR_TO_DYNPTR as
> having LOCAL type, as that's the most unassuming type of dynptr and it
> doesn't have any special helpers that can try to free or acquire extra
> references (unlike skb, xdp, or ringbuf dynptr). So that seems like a safe
> "choice" to make from correctness standpoint. It's still possible to
> pass any type of dynptr to such subprog, though, because generic dynptr
> helpers, like getting data/slice pointers, read/write memory copying
> routines, dynptr adjustment and getter routines all work correctly with
> any type of dynptr.
> 
> Signed-off-by: Andrii Nakryiko <andrii@xxxxxxxxxx>
> ---

Acked-by: Eduard Zingerman <eddyz87@xxxxxxxxx>







[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