lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Date:   Mon, 29 Mar 2021 09:03:56 +0800
From:   kernel test robot <lkp@...el.com>
To:     Ingo Molnar <mingo@...nel.org>
Cc:     kbuild-all@...ts.01.org, linux-kernel@...r.kernel.org,
        x86@...nel.org
Subject: [tip:master 9/23] arch/x86/net/bpf_jit_comp.c:2015:16: error:
 'ideal_nops' undeclared

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git master
head:   4b3ff7dd4b69698c08ca1d51741fe773a7b30b0a
commit: b1edfa9879e8a5e6040c33c157e23030176976a9 [9/23] Merge branch 'x86/cpu'
config: x86_64-rhel-8.3-kselftests (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce (this is a W=1 build):
        # https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git/commit/?id=b1edfa9879e8a5e6040c33c157e23030176976a9
        git remote add tip https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git
        git fetch --no-tags tip master
        git checkout b1edfa9879e8a5e6040c33c157e23030176976a9
        # save the attached .config to linux build tree
        make W=1 ARCH=x86_64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@...el.com>

All errors (new ones prefixed by >>):

   arch/x86/net/bpf_jit_comp.c: In function 'arch_prepare_bpf_trampoline':
>> arch/x86/net/bpf_jit_comp.c:2015:16: error: 'ideal_nops' undeclared (first use in this function)
    2015 |   memcpy(prog, ideal_nops[NOP_ATOMIC5], X86_PATCH_SIZE);
         |                ^~~~~~~~~~
   arch/x86/net/bpf_jit_comp.c:2015:16: note: each undeclared identifier is reported only once for each function it appears in
>> arch/x86/net/bpf_jit_comp.c:2015:27: error: 'NOP_ATOMIC5' undeclared (first use in this function); did you mean 'GFP_ATOMIC'?
    2015 |   memcpy(prog, ideal_nops[NOP_ATOMIC5], X86_PATCH_SIZE);
         |                           ^~~~~~~~~~~
         |                           GFP_ATOMIC
   arch/x86/net/bpf_jit_comp.c: At top level:
   arch/x86/net/bpf_jit_comp.c:2179:5: warning: no previous prototype for 'arch_prepare_bpf_dispatcher' [-Wmissing-prototypes]
    2179 | int arch_prepare_bpf_dispatcher(void *image, s64 *funcs, int num_funcs)
         |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~


vim +/ideal_nops +2015 arch/x86/net/bpf_jit_comp.c

fec56f5890d93f Alexei Starovoitov 2019-11-14  1878  
fec56f5890d93f Alexei Starovoitov 2019-11-14  1879  /* Example:
fec56f5890d93f Alexei Starovoitov 2019-11-14  1880   * __be16 eth_type_trans(struct sk_buff *skb, struct net_device *dev);
fec56f5890d93f Alexei Starovoitov 2019-11-14  1881   * its 'struct btf_func_model' will be nr_args=2
fec56f5890d93f Alexei Starovoitov 2019-11-14  1882   * The assembly code when eth_type_trans is executing after trampoline:
fec56f5890d93f Alexei Starovoitov 2019-11-14  1883   *
fec56f5890d93f Alexei Starovoitov 2019-11-14  1884   * push rbp
fec56f5890d93f Alexei Starovoitov 2019-11-14  1885   * mov rbp, rsp
fec56f5890d93f Alexei Starovoitov 2019-11-14  1886   * sub rsp, 16                     // space for skb and dev
fec56f5890d93f Alexei Starovoitov 2019-11-14  1887   * push rbx                        // temp regs to pass start time
fec56f5890d93f Alexei Starovoitov 2019-11-14  1888   * mov qword ptr [rbp - 16], rdi   // save skb pointer to stack
fec56f5890d93f Alexei Starovoitov 2019-11-14  1889   * mov qword ptr [rbp - 8], rsi    // save dev pointer to stack
fec56f5890d93f Alexei Starovoitov 2019-11-14  1890   * call __bpf_prog_enter           // rcu_read_lock and preempt_disable
fec56f5890d93f Alexei Starovoitov 2019-11-14  1891   * mov rbx, rax                    // remember start time in bpf stats are enabled
fec56f5890d93f Alexei Starovoitov 2019-11-14  1892   * lea rdi, [rbp - 16]             // R1==ctx of bpf prog
fec56f5890d93f Alexei Starovoitov 2019-11-14  1893   * call addr_of_jited_FENTRY_prog
fec56f5890d93f Alexei Starovoitov 2019-11-14  1894   * movabsq rdi, 64bit_addr_of_struct_bpf_prog  // unused if bpf stats are off
fec56f5890d93f Alexei Starovoitov 2019-11-14  1895   * mov rsi, rbx                    // prog start time
fec56f5890d93f Alexei Starovoitov 2019-11-14  1896   * call __bpf_prog_exit            // rcu_read_unlock, preempt_enable and stats math
fec56f5890d93f Alexei Starovoitov 2019-11-14  1897   * mov rdi, qword ptr [rbp - 16]   // restore skb pointer from stack
fec56f5890d93f Alexei Starovoitov 2019-11-14  1898   * mov rsi, qword ptr [rbp - 8]    // restore dev pointer from stack
fec56f5890d93f Alexei Starovoitov 2019-11-14  1899   * pop rbx
fec56f5890d93f Alexei Starovoitov 2019-11-14  1900   * leave
fec56f5890d93f Alexei Starovoitov 2019-11-14  1901   * ret
fec56f5890d93f Alexei Starovoitov 2019-11-14  1902   *
fec56f5890d93f Alexei Starovoitov 2019-11-14  1903   * eth_type_trans has 5 byte nop at the beginning. These 5 bytes will be
fec56f5890d93f Alexei Starovoitov 2019-11-14  1904   * replaced with 'call generated_bpf_trampoline'. When it returns
fec56f5890d93f Alexei Starovoitov 2019-11-14  1905   * eth_type_trans will continue executing with original skb and dev pointers.
fec56f5890d93f Alexei Starovoitov 2019-11-14  1906   *
fec56f5890d93f Alexei Starovoitov 2019-11-14  1907   * The assembly code when eth_type_trans is called from trampoline:
fec56f5890d93f Alexei Starovoitov 2019-11-14  1908   *
fec56f5890d93f Alexei Starovoitov 2019-11-14  1909   * push rbp
fec56f5890d93f Alexei Starovoitov 2019-11-14  1910   * mov rbp, rsp
fec56f5890d93f Alexei Starovoitov 2019-11-14  1911   * sub rsp, 24                     // space for skb, dev, return value
fec56f5890d93f Alexei Starovoitov 2019-11-14  1912   * push rbx                        // temp regs to pass start time
fec56f5890d93f Alexei Starovoitov 2019-11-14  1913   * mov qword ptr [rbp - 24], rdi   // save skb pointer to stack
fec56f5890d93f Alexei Starovoitov 2019-11-14  1914   * mov qword ptr [rbp - 16], rsi   // save dev pointer to stack
fec56f5890d93f Alexei Starovoitov 2019-11-14  1915   * call __bpf_prog_enter           // rcu_read_lock and preempt_disable
fec56f5890d93f Alexei Starovoitov 2019-11-14  1916   * mov rbx, rax                    // remember start time if bpf stats are enabled
fec56f5890d93f Alexei Starovoitov 2019-11-14  1917   * lea rdi, [rbp - 24]             // R1==ctx of bpf prog
fec56f5890d93f Alexei Starovoitov 2019-11-14  1918   * call addr_of_jited_FENTRY_prog  // bpf prog can access skb and dev
fec56f5890d93f Alexei Starovoitov 2019-11-14  1919   * movabsq rdi, 64bit_addr_of_struct_bpf_prog  // unused if bpf stats are off
fec56f5890d93f Alexei Starovoitov 2019-11-14  1920   * mov rsi, rbx                    // prog start time
fec56f5890d93f Alexei Starovoitov 2019-11-14  1921   * call __bpf_prog_exit            // rcu_read_unlock, preempt_enable and stats math
fec56f5890d93f Alexei Starovoitov 2019-11-14  1922   * mov rdi, qword ptr [rbp - 24]   // restore skb pointer from stack
fec56f5890d93f Alexei Starovoitov 2019-11-14  1923   * mov rsi, qword ptr [rbp - 16]   // restore dev pointer from stack
fec56f5890d93f Alexei Starovoitov 2019-11-14  1924   * call eth_type_trans+5           // execute body of eth_type_trans
fec56f5890d93f Alexei Starovoitov 2019-11-14  1925   * mov qword ptr [rbp - 8], rax    // save return value
fec56f5890d93f Alexei Starovoitov 2019-11-14  1926   * call __bpf_prog_enter           // rcu_read_lock and preempt_disable
fec56f5890d93f Alexei Starovoitov 2019-11-14  1927   * mov rbx, rax                    // remember start time in bpf stats are enabled
fec56f5890d93f Alexei Starovoitov 2019-11-14  1928   * lea rdi, [rbp - 24]             // R1==ctx of bpf prog
fec56f5890d93f Alexei Starovoitov 2019-11-14  1929   * call addr_of_jited_FEXIT_prog   // bpf prog can access skb, dev, return value
fec56f5890d93f Alexei Starovoitov 2019-11-14  1930   * movabsq rdi, 64bit_addr_of_struct_bpf_prog  // unused if bpf stats are off
fec56f5890d93f Alexei Starovoitov 2019-11-14  1931   * mov rsi, rbx                    // prog start time
fec56f5890d93f Alexei Starovoitov 2019-11-14  1932   * call __bpf_prog_exit            // rcu_read_unlock, preempt_enable and stats math
fec56f5890d93f Alexei Starovoitov 2019-11-14  1933   * mov rax, qword ptr [rbp - 8]    // restore eth_type_trans's return value
fec56f5890d93f Alexei Starovoitov 2019-11-14  1934   * pop rbx
fec56f5890d93f Alexei Starovoitov 2019-11-14  1935   * leave
fec56f5890d93f Alexei Starovoitov 2019-11-14  1936   * add rsp, 8                      // skip eth_type_trans's frame
fec56f5890d93f Alexei Starovoitov 2019-11-14  1937   * ret                             // return to its caller
fec56f5890d93f Alexei Starovoitov 2019-11-14  1938   */
e21aa341785c67 Alexei Starovoitov 2021-03-16  1939  int arch_prepare_bpf_trampoline(struct bpf_tramp_image *im, void *image, void *image_end,
85d33df357b634 Martin KaFai Lau   2020-01-08  1940  				const struct btf_func_model *m, u32 flags,
88fd9e5352fe05 KP Singh           2020-03-04  1941  				struct bpf_tramp_progs *tprogs,
fec56f5890d93f Alexei Starovoitov 2019-11-14  1942  				void *orig_call)
fec56f5890d93f Alexei Starovoitov 2019-11-14  1943  {
ae24082331d9bb KP Singh           2020-03-04  1944  	int ret, i, cnt = 0, nr_args = m->nr_args;
fec56f5890d93f Alexei Starovoitov 2019-11-14  1945  	int stack_size = nr_args * 8;
88fd9e5352fe05 KP Singh           2020-03-04  1946  	struct bpf_tramp_progs *fentry = &tprogs[BPF_TRAMP_FENTRY];
88fd9e5352fe05 KP Singh           2020-03-04  1947  	struct bpf_tramp_progs *fexit = &tprogs[BPF_TRAMP_FEXIT];
ae24082331d9bb KP Singh           2020-03-04  1948  	struct bpf_tramp_progs *fmod_ret = &tprogs[BPF_TRAMP_MODIFY_RETURN];
ae24082331d9bb KP Singh           2020-03-04  1949  	u8 **branches = NULL;
fec56f5890d93f Alexei Starovoitov 2019-11-14  1950  	u8 *prog;
fec56f5890d93f Alexei Starovoitov 2019-11-14  1951  
fec56f5890d93f Alexei Starovoitov 2019-11-14  1952  	/* x86-64 supports up to 6 arguments. 7+ can be added in the future */
fec56f5890d93f Alexei Starovoitov 2019-11-14  1953  	if (nr_args > 6)
fec56f5890d93f Alexei Starovoitov 2019-11-14  1954  		return -ENOTSUPP;
fec56f5890d93f Alexei Starovoitov 2019-11-14  1955  
fec56f5890d93f Alexei Starovoitov 2019-11-14  1956  	if ((flags & BPF_TRAMP_F_RESTORE_REGS) &&
fec56f5890d93f Alexei Starovoitov 2019-11-14  1957  	    (flags & BPF_TRAMP_F_SKIP_FRAME))
fec56f5890d93f Alexei Starovoitov 2019-11-14  1958  		return -EINVAL;
fec56f5890d93f Alexei Starovoitov 2019-11-14  1959  
fec56f5890d93f Alexei Starovoitov 2019-11-14  1960  	if (flags & BPF_TRAMP_F_CALL_ORIG)
fec56f5890d93f Alexei Starovoitov 2019-11-14  1961  		stack_size += 8; /* room for return value of orig_call */
fec56f5890d93f Alexei Starovoitov 2019-11-14  1962  
fec56f5890d93f Alexei Starovoitov 2019-11-14  1963  	if (flags & BPF_TRAMP_F_SKIP_FRAME)
fec56f5890d93f Alexei Starovoitov 2019-11-14  1964  		/* skip patched call instruction and point orig_call to actual
fec56f5890d93f Alexei Starovoitov 2019-11-14  1965  		 * body of the kernel function.
fec56f5890d93f Alexei Starovoitov 2019-11-14  1966  		 */
4b3da77b72ad6b Daniel Borkmann    2019-11-22  1967  		orig_call += X86_PATCH_SIZE;
fec56f5890d93f Alexei Starovoitov 2019-11-14  1968  
fec56f5890d93f Alexei Starovoitov 2019-11-14  1969  	prog = image;
fec56f5890d93f Alexei Starovoitov 2019-11-14  1970  
fec56f5890d93f Alexei Starovoitov 2019-11-14  1971  	EMIT1(0x55);		 /* push rbp */
fec56f5890d93f Alexei Starovoitov 2019-11-14  1972  	EMIT3(0x48, 0x89, 0xE5); /* mov rbp, rsp */
fec56f5890d93f Alexei Starovoitov 2019-11-14  1973  	EMIT4(0x48, 0x83, 0xEC, stack_size); /* sub rsp, stack_size */
fec56f5890d93f Alexei Starovoitov 2019-11-14  1974  	EMIT1(0x53);		 /* push rbx */
fec56f5890d93f Alexei Starovoitov 2019-11-14  1975  
fec56f5890d93f Alexei Starovoitov 2019-11-14  1976  	save_regs(m, &prog, nr_args, stack_size);
fec56f5890d93f Alexei Starovoitov 2019-11-14  1977  
e21aa341785c67 Alexei Starovoitov 2021-03-16  1978  	if (flags & BPF_TRAMP_F_CALL_ORIG) {
e21aa341785c67 Alexei Starovoitov 2021-03-16  1979  		/* arg1: mov rdi, im */
e21aa341785c67 Alexei Starovoitov 2021-03-16  1980  		emit_mov_imm64(&prog, BPF_REG_1, (long) im >> 32, (u32) (long) im);
e21aa341785c67 Alexei Starovoitov 2021-03-16  1981  		if (emit_call(&prog, __bpf_tramp_enter, prog)) {
e21aa341785c67 Alexei Starovoitov 2021-03-16  1982  			ret = -EINVAL;
e21aa341785c67 Alexei Starovoitov 2021-03-16  1983  			goto cleanup;
e21aa341785c67 Alexei Starovoitov 2021-03-16  1984  		}
e21aa341785c67 Alexei Starovoitov 2021-03-16  1985  	}
e21aa341785c67 Alexei Starovoitov 2021-03-16  1986  
88fd9e5352fe05 KP Singh           2020-03-04  1987  	if (fentry->nr_progs)
88fd9e5352fe05 KP Singh           2020-03-04  1988  		if (invoke_bpf(m, &prog, fentry, stack_size))
fec56f5890d93f Alexei Starovoitov 2019-11-14  1989  			return -EINVAL;
fec56f5890d93f Alexei Starovoitov 2019-11-14  1990  
ae24082331d9bb KP Singh           2020-03-04  1991  	if (fmod_ret->nr_progs) {
ae24082331d9bb KP Singh           2020-03-04  1992  		branches = kcalloc(fmod_ret->nr_progs, sizeof(u8 *),
ae24082331d9bb KP Singh           2020-03-04  1993  				   GFP_KERNEL);
ae24082331d9bb KP Singh           2020-03-04  1994  		if (!branches)
ae24082331d9bb KP Singh           2020-03-04  1995  			return -ENOMEM;
ae24082331d9bb KP Singh           2020-03-04  1996  
ae24082331d9bb KP Singh           2020-03-04  1997  		if (invoke_bpf_mod_ret(m, &prog, fmod_ret, stack_size,
ae24082331d9bb KP Singh           2020-03-04  1998  				       branches)) {
ae24082331d9bb KP Singh           2020-03-04  1999  			ret = -EINVAL;
ae24082331d9bb KP Singh           2020-03-04  2000  			goto cleanup;
ae24082331d9bb KP Singh           2020-03-04  2001  		}
ae24082331d9bb KP Singh           2020-03-04  2002  	}
ae24082331d9bb KP Singh           2020-03-04  2003  
fec56f5890d93f Alexei Starovoitov 2019-11-14  2004  	if (flags & BPF_TRAMP_F_CALL_ORIG) {
fec56f5890d93f Alexei Starovoitov 2019-11-14  2005  		restore_regs(m, &prog, nr_args, stack_size);
fec56f5890d93f Alexei Starovoitov 2019-11-14  2006  
fec56f5890d93f Alexei Starovoitov 2019-11-14  2007  		/* call original function */
ae24082331d9bb KP Singh           2020-03-04  2008  		if (emit_call(&prog, orig_call, prog)) {
ae24082331d9bb KP Singh           2020-03-04  2009  			ret = -EINVAL;
ae24082331d9bb KP Singh           2020-03-04  2010  			goto cleanup;
ae24082331d9bb KP Singh           2020-03-04  2011  		}
fec56f5890d93f Alexei Starovoitov 2019-11-14  2012  		/* remember return value in a stack for bpf prog to access */
fec56f5890d93f Alexei Starovoitov 2019-11-14  2013  		emit_stx(&prog, BPF_DW, BPF_REG_FP, BPF_REG_0, -8);
e21aa341785c67 Alexei Starovoitov 2021-03-16  2014  		im->ip_after_call = prog;
b9082970478009 Stanislav Fomichev 2021-03-19 @2015  		memcpy(prog, ideal_nops[NOP_ATOMIC5], X86_PATCH_SIZE);
b9082970478009 Stanislav Fomichev 2021-03-19  2016  		prog += X86_PATCH_SIZE;
fec56f5890d93f Alexei Starovoitov 2019-11-14  2017  	}
fec56f5890d93f Alexei Starovoitov 2019-11-14  2018  
ae24082331d9bb KP Singh           2020-03-04  2019  	if (fmod_ret->nr_progs) {
ae24082331d9bb KP Singh           2020-03-04  2020  		/* From Intel 64 and IA-32 Architectures Optimization
ae24082331d9bb KP Singh           2020-03-04  2021  		 * Reference Manual, 3.4.1.4 Code Alignment, Assembly/Compiler
ae24082331d9bb KP Singh           2020-03-04  2022  		 * Coding Rule 11: All branch targets should be 16-byte
ae24082331d9bb KP Singh           2020-03-04  2023  		 * aligned.
ae24082331d9bb KP Singh           2020-03-04  2024  		 */
ae24082331d9bb KP Singh           2020-03-04  2025  		emit_align(&prog, 16);
ae24082331d9bb KP Singh           2020-03-04  2026  		/* Update the branches saved in invoke_bpf_mod_ret with the
ae24082331d9bb KP Singh           2020-03-04  2027  		 * aligned address of do_fexit.
ae24082331d9bb KP Singh           2020-03-04  2028  		 */
ae24082331d9bb KP Singh           2020-03-04  2029  		for (i = 0; i < fmod_ret->nr_progs; i++)
ae24082331d9bb KP Singh           2020-03-04  2030  			emit_cond_near_jump(&branches[i], prog, branches[i],
ae24082331d9bb KP Singh           2020-03-04  2031  					    X86_JNE);
ae24082331d9bb KP Singh           2020-03-04  2032  	}
ae24082331d9bb KP Singh           2020-03-04  2033  
88fd9e5352fe05 KP Singh           2020-03-04  2034  	if (fexit->nr_progs)
ae24082331d9bb KP Singh           2020-03-04  2035  		if (invoke_bpf(m, &prog, fexit, stack_size)) {
ae24082331d9bb KP Singh           2020-03-04  2036  			ret = -EINVAL;
ae24082331d9bb KP Singh           2020-03-04  2037  			goto cleanup;
ae24082331d9bb KP Singh           2020-03-04  2038  		}
fec56f5890d93f Alexei Starovoitov 2019-11-14  2039  
fec56f5890d93f Alexei Starovoitov 2019-11-14  2040  	if (flags & BPF_TRAMP_F_RESTORE_REGS)
fec56f5890d93f Alexei Starovoitov 2019-11-14  2041  		restore_regs(m, &prog, nr_args, stack_size);
fec56f5890d93f Alexei Starovoitov 2019-11-14  2042  
ae24082331d9bb KP Singh           2020-03-04  2043  	/* This needs to be done regardless. If there were fmod_ret programs,
ae24082331d9bb KP Singh           2020-03-04  2044  	 * the return value is only updated on the stack and still needs to be
ae24082331d9bb KP Singh           2020-03-04  2045  	 * restored to R0.
ae24082331d9bb KP Singh           2020-03-04  2046  	 */
e21aa341785c67 Alexei Starovoitov 2021-03-16  2047  	if (flags & BPF_TRAMP_F_CALL_ORIG) {
e21aa341785c67 Alexei Starovoitov 2021-03-16  2048  		im->ip_epilogue = prog;
e21aa341785c67 Alexei Starovoitov 2021-03-16  2049  		/* arg1: mov rdi, im */
e21aa341785c67 Alexei Starovoitov 2021-03-16  2050  		emit_mov_imm64(&prog, BPF_REG_1, (long) im >> 32, (u32) (long) im);
e21aa341785c67 Alexei Starovoitov 2021-03-16  2051  		if (emit_call(&prog, __bpf_tramp_exit, prog)) {
e21aa341785c67 Alexei Starovoitov 2021-03-16  2052  			ret = -EINVAL;
e21aa341785c67 Alexei Starovoitov 2021-03-16  2053  			goto cleanup;
e21aa341785c67 Alexei Starovoitov 2021-03-16  2054  		}
fec56f5890d93f Alexei Starovoitov 2019-11-14  2055  		/* restore original return value back into RAX */
fec56f5890d93f Alexei Starovoitov 2019-11-14  2056  		emit_ldx(&prog, BPF_DW, BPF_REG_0, BPF_REG_FP, -8);
e21aa341785c67 Alexei Starovoitov 2021-03-16  2057  	}
fec56f5890d93f Alexei Starovoitov 2019-11-14  2058  
fec56f5890d93f Alexei Starovoitov 2019-11-14  2059  	EMIT1(0x5B); /* pop rbx */
fec56f5890d93f Alexei Starovoitov 2019-11-14  2060  	EMIT1(0xC9); /* leave */
fec56f5890d93f Alexei Starovoitov 2019-11-14  2061  	if (flags & BPF_TRAMP_F_SKIP_FRAME)
fec56f5890d93f Alexei Starovoitov 2019-11-14  2062  		/* skip our return address and return to parent */
fec56f5890d93f Alexei Starovoitov 2019-11-14  2063  		EMIT4(0x48, 0x83, 0xC4, 8); /* add rsp, 8 */
fec56f5890d93f Alexei Starovoitov 2019-11-14  2064  	EMIT1(0xC3); /* ret */
85d33df357b634 Martin KaFai Lau   2020-01-08  2065  	/* Make sure the trampoline generation logic doesn't overflow */
ae24082331d9bb KP Singh           2020-03-04  2066  	if (WARN_ON_ONCE(prog > (u8 *)image_end - BPF_INSN_SAFETY)) {
ae24082331d9bb KP Singh           2020-03-04  2067  		ret = -EFAULT;
ae24082331d9bb KP Singh           2020-03-04  2068  		goto cleanup;
ae24082331d9bb KP Singh           2020-03-04  2069  	}
ae24082331d9bb KP Singh           2020-03-04  2070  	ret = prog - (u8 *)image;
ae24082331d9bb KP Singh           2020-03-04  2071  
ae24082331d9bb KP Singh           2020-03-04  2072  cleanup:
ae24082331d9bb KP Singh           2020-03-04  2073  	kfree(branches);
ae24082331d9bb KP Singh           2020-03-04  2074  	return ret;
fec56f5890d93f Alexei Starovoitov 2019-11-14  2075  }
fec56f5890d93f Alexei Starovoitov 2019-11-14  2076  

:::::: The code at line 2015 was first introduced by commit
:::::: b9082970478009b778aa9b22d5561eef35b53b63 bpf: Use NOP_ATOMIC5 instead of emit_nops(&prog, 5) for BPF_TRAMP_F_CALL_ORIG

:::::: TO: Stanislav Fomichev <sdf@...gle.com>
:::::: CC: Alexei Starovoitov <ast@...nel.org>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

Download attachment ".config.gz" of type "application/gzip" (41502 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ