diff options
Diffstat (limited to 'kernel/bpf/bpf_iter.c')
| -rw-r--r-- | kernel/bpf/bpf_iter.c | 12 | 
1 files changed, 6 insertions, 6 deletions
| diff --git a/kernel/bpf/bpf_iter.c b/kernel/bpf/bpf_iter.c index d5d96ceca105..2726a5950cfa 100644 --- a/kernel/bpf/bpf_iter.c +++ b/kernel/bpf/bpf_iter.c @@ -81,10 +81,9 @@ static bool bpf_iter_support_resched(struct seq_file *seq)  #define MAX_ITER_OBJECTS	1000000  /* bpf_seq_read, a customized and simpler version for bpf iterator. - * no_llseek is assumed for this file.   * The following are differences from seq_read():   *  . fixed buffer size (PAGE_SIZE) - *  . assuming no_llseek + *  . assuming NULL ->llseek()   *  . stop() may call bpf program, handling potential overflow there   */  static ssize_t bpf_seq_read(struct file *file, char __user *buf, size_t size, @@ -723,9 +722,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 +729,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++) { | 
