ebpf 中的有界循环。现在验证者是否检查程序是否为 DAG?
bounded loops in ebpf. Does now the verifier check if the program is a DAG?
因为 ebpf 程序现在允许有界循环 https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git/commit/?id=2589726d12a1b12eaaa93c7f1ea64287e383c7a5
如果程序控制流是有向无环图,验证者是否仍然在第一遍检查?
是,it still does,并在两种情况下拒绝有后缘的程序:
- 如果程序由非特权用户加载。
env->allow_ptr_leaks
布尔值表示特权用户。
- 如果后缘是performed using a call。 只有正常的跳转才能形成有界循环(这并不意味着你不能在内部进行有界循环的bpf-to-bpf调用) .
因为 ebpf 程序现在允许有界循环 https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git/commit/?id=2589726d12a1b12eaaa93c7f1ea64287e383c7a5 如果程序控制流是有向无环图,验证者是否仍然在第一遍检查?
是,it still does,并在两种情况下拒绝有后缘的程序:
- 如果程序由非特权用户加载。
env->allow_ptr_leaks
布尔值表示特权用户。 - 如果后缘是performed using a call。 只有正常的跳转才能形成有界循环(这并不意味着你不能在内部进行有界循环的bpf-to-bpf调用) .