Re: [PATCH bpf-next] bpf: Add verifier support for custom callback return range

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

 



On 09/08, Dave Marchevsky wrote:
Verifier logic to confirm that a callback function returns 0 or 1 was
added in commit 69c087ba6225b ("bpf: Add bpf_for_each_map_elem() helper").
At the time, callback return value was only used to continue or stop
iteration.

In order to support callbacks with a broader return value range, such as
those added in rbtree series[0] and others, add a callback_ret_range to
bpf_func_state. Verifier's helpers which set in_callback_fn will also
set the new field, which the verifier will later use to check return
value bounds.

Default to tnum_range(0, 0) instead of using tnum_unknown as a sentinel
value as the latter would prevent the valid range (0, U64_MAX) being
used. Previous global default tnum_range(0, 1) is explicitly set for
extant callback helpers. The change to global default was made after
discussion around this patch in rbtree series [1], goal here is to make
it more obvious that callback_ret_range should be explicitly set.

   [0]: lore.kernel.org/bpf/20220830172759.4069786-1-davemarchevsky@xxxxxx/
   [1]: lore.kernel.org/bpf/20220830172759.4069786-2-davemarchevsky@xxxxxx/

Signed-off-by: Dave Marchevsky <davemarchevsky@xxxxxx>
---
Sending this separately from rbtree patchset as Joanne also needs this
change for her usecase.

Not sure you need that given everybody's happy about it in the separate
thread, but for the sake of completion:

Reviewed-by: Stanislav Fomichev <sdf@xxxxxxxxxx>



[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