diff options
Diffstat (limited to 'kernel/bpf/bpf_iter.c')
| -rw-r--r-- | kernel/bpf/bpf_iter.c | 9 | 
1 files changed, 5 insertions, 4 deletions
diff --git a/kernel/bpf/bpf_iter.c b/kernel/bpf/bpf_iter.c index d5d96ceca105..7e8fd49406f6 100644 --- a/kernel/bpf/bpf_iter.c +++ b/kernel/bpf/bpf_iter.c @@ -723,9 +723,6 @@ const struct bpf_func_proto bpf_for_each_map_elem_proto = {  	.arg4_type	= ARG_ANYTHING,  }; -/* maximum number of loops */ -#define MAX_LOOPS	BIT(23) -  BPF_CALL_4(bpf_loop, u32, nr_loops, void *, callback_fn, void *, callback_ctx,  	   u64, flags)  { @@ -733,9 +730,13 @@ BPF_CALL_4(bpf_loop, u32, nr_loops, void *, callback_fn, void *, callback_ctx,  	u64 ret;  	u32 i; +	/* Note: these safety checks are also verified when bpf_loop +	 * is inlined, be careful to modify this code in sync. See +	 * function verifier.c:inline_bpf_loop. +	 */  	if (flags)  		return -EINVAL; -	if (nr_loops > MAX_LOOPS) +	if (nr_loops > BPF_MAX_LOOPS)  		return -E2BIG;  	for (i = 0; i < nr_loops; i++) {  |