All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: kbuild@lists.01.org
Subject: Re: [PATCH v2 2/2] bpf: move interpreter into separate source file
Date: Thu, 29 Oct 2020 12:26:54 +0800	[thread overview]
Message-ID: <202010291225.RONVAo77-lkp@intel.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 19630 bytes --]

CC: kbuild-all(a)lists.01.org
In-Reply-To: <20201028171506.15682-3-ardb@kernel.org>
References: <20201028171506.15682-3-ardb@kernel.org>
TO: Ard Biesheuvel <ardb@kernel.org>
TO: linux-kernel(a)vger.kernel.org
CC: netdev(a)vger.kernel.org
CC: bpf(a)vger.kernel.org
CC: arnd(a)arndb.de
CC: Ard Biesheuvel <ardb@kernel.org>
CC: Nick Desaulniers <ndesaulniers@google.com>
CC: Arvind Sankar <nivedita@alum.mit.edu>
CC: Randy Dunlap <rdunlap@infradead.org>
CC: Josh Poimboeuf <jpoimboe@redhat.com>
CC: Thomas Gleixner <tglx@linutronix.de>

Hi Ard,

I love your patch! Perhaps something to improve:

[auto build test WARNING on bpf-next/master]
[also build test WARNING on bpf/master linus/master linux/master v5.10-rc1 next-20201028]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Ard-Biesheuvel/bpf-don-t-rely-on-GCC-__attribute__-optimize-to-disable-GCSE/20201029-060312
base:   https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git master
:::::: branch date: 6 hours ago
:::::: commit date: 6 hours ago
config: i386-randconfig-m021-20201028 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

smatch warnings:
kernel/bpf/interp.c:277 ___bpf_prog_run() warn: should 'regs[insn->dst_reg] << regs[insn->src_reg]' be a 64 bit type?
kernel/bpf/interp.c:277 ___bpf_prog_run() warn: should 'regs[insn->dst_reg] << insn->imm' be a 64 bit type?

vim +277 kernel/bpf/interp.c

11087cf7f27f46 Ard Biesheuvel 2020-10-28  254  
11087cf7f27f46 Ard Biesheuvel 2020-10-28  255  select_insn:
11087cf7f27f46 Ard Biesheuvel 2020-10-28  256  	goto *jumptable[insn->code];
11087cf7f27f46 Ard Biesheuvel 2020-10-28  257  
11087cf7f27f46 Ard Biesheuvel 2020-10-28  258  	/* ALU */
11087cf7f27f46 Ard Biesheuvel 2020-10-28  259  #define ALU(OPCODE, OP)			\
11087cf7f27f46 Ard Biesheuvel 2020-10-28  260  	ALU64_##OPCODE##_X:		\
11087cf7f27f46 Ard Biesheuvel 2020-10-28  261  		DST = DST OP SRC;	\
11087cf7f27f46 Ard Biesheuvel 2020-10-28  262  		CONT;			\
11087cf7f27f46 Ard Biesheuvel 2020-10-28  263  	ALU_##OPCODE##_X:		\
11087cf7f27f46 Ard Biesheuvel 2020-10-28  264  		DST = (u32) DST OP (u32) SRC;	\
11087cf7f27f46 Ard Biesheuvel 2020-10-28  265  		CONT;			\
11087cf7f27f46 Ard Biesheuvel 2020-10-28  266  	ALU64_##OPCODE##_K:		\
11087cf7f27f46 Ard Biesheuvel 2020-10-28  267  		DST = DST OP IMM;		\
11087cf7f27f46 Ard Biesheuvel 2020-10-28  268  		CONT;			\
11087cf7f27f46 Ard Biesheuvel 2020-10-28  269  	ALU_##OPCODE##_K:		\
11087cf7f27f46 Ard Biesheuvel 2020-10-28  270  		DST = (u32) DST OP (u32) IMM;	\
11087cf7f27f46 Ard Biesheuvel 2020-10-28  271  		CONT;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  272  
11087cf7f27f46 Ard Biesheuvel 2020-10-28  273  	ALU(ADD,  +)
11087cf7f27f46 Ard Biesheuvel 2020-10-28  274  	ALU(SUB,  -)
11087cf7f27f46 Ard Biesheuvel 2020-10-28  275  	ALU(AND,  &)
11087cf7f27f46 Ard Biesheuvel 2020-10-28  276  	ALU(OR,   |)
11087cf7f27f46 Ard Biesheuvel 2020-10-28 @277  	ALU(LSH, <<)
11087cf7f27f46 Ard Biesheuvel 2020-10-28  278  	ALU(RSH, >>)
11087cf7f27f46 Ard Biesheuvel 2020-10-28  279  	ALU(XOR,  ^)
11087cf7f27f46 Ard Biesheuvel 2020-10-28  280  	ALU(MUL,  *)
11087cf7f27f46 Ard Biesheuvel 2020-10-28  281  #undef ALU
11087cf7f27f46 Ard Biesheuvel 2020-10-28  282  	ALU_NEG:
11087cf7f27f46 Ard Biesheuvel 2020-10-28  283  		DST = (u32) -DST;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  284  		CONT;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  285  	ALU64_NEG:
11087cf7f27f46 Ard Biesheuvel 2020-10-28  286  		DST = -DST;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  287  		CONT;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  288  	ALU_MOV_X:
11087cf7f27f46 Ard Biesheuvel 2020-10-28  289  		DST = (u32) SRC;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  290  		CONT;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  291  	ALU_MOV_K:
11087cf7f27f46 Ard Biesheuvel 2020-10-28  292  		DST = (u32) IMM;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  293  		CONT;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  294  	ALU64_MOV_X:
11087cf7f27f46 Ard Biesheuvel 2020-10-28  295  		DST = SRC;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  296  		CONT;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  297  	ALU64_MOV_K:
11087cf7f27f46 Ard Biesheuvel 2020-10-28  298  		DST = IMM;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  299  		CONT;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  300  	LD_IMM_DW:
11087cf7f27f46 Ard Biesheuvel 2020-10-28  301  		DST = (u64) (u32) insn[0].imm | ((u64) (u32) insn[1].imm) << 32;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  302  		insn++;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  303  		CONT;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  304  	ALU_ARSH_X:
11087cf7f27f46 Ard Biesheuvel 2020-10-28  305  		DST = (u64) (u32) (((s32) DST) >> SRC);
11087cf7f27f46 Ard Biesheuvel 2020-10-28  306  		CONT;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  307  	ALU_ARSH_K:
11087cf7f27f46 Ard Biesheuvel 2020-10-28  308  		DST = (u64) (u32) (((s32) DST) >> IMM);
11087cf7f27f46 Ard Biesheuvel 2020-10-28  309  		CONT;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  310  	ALU64_ARSH_X:
11087cf7f27f46 Ard Biesheuvel 2020-10-28  311  		(*(s64 *) &DST) >>= SRC;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  312  		CONT;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  313  	ALU64_ARSH_K:
11087cf7f27f46 Ard Biesheuvel 2020-10-28  314  		(*(s64 *) &DST) >>= IMM;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  315  		CONT;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  316  	ALU64_MOD_X:
11087cf7f27f46 Ard Biesheuvel 2020-10-28  317  		div64_u64_rem(DST, SRC, &AX);
11087cf7f27f46 Ard Biesheuvel 2020-10-28  318  		DST = AX;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  319  		CONT;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  320  	ALU_MOD_X:
11087cf7f27f46 Ard Biesheuvel 2020-10-28  321  		AX = (u32) DST;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  322  		DST = do_div(AX, (u32) SRC);
11087cf7f27f46 Ard Biesheuvel 2020-10-28  323  		CONT;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  324  	ALU64_MOD_K:
11087cf7f27f46 Ard Biesheuvel 2020-10-28  325  		div64_u64_rem(DST, IMM, &AX);
11087cf7f27f46 Ard Biesheuvel 2020-10-28  326  		DST = AX;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  327  		CONT;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  328  	ALU_MOD_K:
11087cf7f27f46 Ard Biesheuvel 2020-10-28  329  		AX = (u32) DST;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  330  		DST = do_div(AX, (u32) IMM);
11087cf7f27f46 Ard Biesheuvel 2020-10-28  331  		CONT;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  332  	ALU64_DIV_X:
11087cf7f27f46 Ard Biesheuvel 2020-10-28  333  		DST = div64_u64(DST, SRC);
11087cf7f27f46 Ard Biesheuvel 2020-10-28  334  		CONT;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  335  	ALU_DIV_X:
11087cf7f27f46 Ard Biesheuvel 2020-10-28  336  		AX = (u32) DST;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  337  		do_div(AX, (u32) SRC);
11087cf7f27f46 Ard Biesheuvel 2020-10-28  338  		DST = (u32) AX;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  339  		CONT;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  340  	ALU64_DIV_K:
11087cf7f27f46 Ard Biesheuvel 2020-10-28  341  		DST = div64_u64(DST, IMM);
11087cf7f27f46 Ard Biesheuvel 2020-10-28  342  		CONT;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  343  	ALU_DIV_K:
11087cf7f27f46 Ard Biesheuvel 2020-10-28  344  		AX = (u32) DST;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  345  		do_div(AX, (u32) IMM);
11087cf7f27f46 Ard Biesheuvel 2020-10-28  346  		DST = (u32) AX;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  347  		CONT;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  348  	ALU_END_TO_BE:
11087cf7f27f46 Ard Biesheuvel 2020-10-28  349  		switch (IMM) {
11087cf7f27f46 Ard Biesheuvel 2020-10-28  350  		case 16:
11087cf7f27f46 Ard Biesheuvel 2020-10-28  351  			DST = (__force u16) cpu_to_be16(DST);
11087cf7f27f46 Ard Biesheuvel 2020-10-28  352  			break;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  353  		case 32:
11087cf7f27f46 Ard Biesheuvel 2020-10-28  354  			DST = (__force u32) cpu_to_be32(DST);
11087cf7f27f46 Ard Biesheuvel 2020-10-28  355  			break;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  356  		case 64:
11087cf7f27f46 Ard Biesheuvel 2020-10-28  357  			DST = (__force u64) cpu_to_be64(DST);
11087cf7f27f46 Ard Biesheuvel 2020-10-28  358  			break;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  359  		}
11087cf7f27f46 Ard Biesheuvel 2020-10-28  360  		CONT;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  361  	ALU_END_TO_LE:
11087cf7f27f46 Ard Biesheuvel 2020-10-28  362  		switch (IMM) {
11087cf7f27f46 Ard Biesheuvel 2020-10-28  363  		case 16:
11087cf7f27f46 Ard Biesheuvel 2020-10-28  364  			DST = (__force u16) cpu_to_le16(DST);
11087cf7f27f46 Ard Biesheuvel 2020-10-28  365  			break;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  366  		case 32:
11087cf7f27f46 Ard Biesheuvel 2020-10-28  367  			DST = (__force u32) cpu_to_le32(DST);
11087cf7f27f46 Ard Biesheuvel 2020-10-28  368  			break;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  369  		case 64:
11087cf7f27f46 Ard Biesheuvel 2020-10-28  370  			DST = (__force u64) cpu_to_le64(DST);
11087cf7f27f46 Ard Biesheuvel 2020-10-28  371  			break;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  372  		}
11087cf7f27f46 Ard Biesheuvel 2020-10-28  373  		CONT;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  374  
11087cf7f27f46 Ard Biesheuvel 2020-10-28  375  	/* CALL */
11087cf7f27f46 Ard Biesheuvel 2020-10-28  376  	JMP_CALL:
11087cf7f27f46 Ard Biesheuvel 2020-10-28  377  		/* Function call scratches BPF_R1-BPF_R5 registers,
11087cf7f27f46 Ard Biesheuvel 2020-10-28  378  		 * preserves BPF_R6-BPF_R9, and stores return value
11087cf7f27f46 Ard Biesheuvel 2020-10-28  379  		 * into BPF_R0.
11087cf7f27f46 Ard Biesheuvel 2020-10-28  380  		 */
11087cf7f27f46 Ard Biesheuvel 2020-10-28  381  		BPF_R0 = (__bpf_call_base + insn->imm)(BPF_R1, BPF_R2, BPF_R3,
11087cf7f27f46 Ard Biesheuvel 2020-10-28  382  						       BPF_R4, BPF_R5);
11087cf7f27f46 Ard Biesheuvel 2020-10-28  383  		CONT;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  384  
11087cf7f27f46 Ard Biesheuvel 2020-10-28  385  	JMP_CALL_ARGS:
11087cf7f27f46 Ard Biesheuvel 2020-10-28  386  		BPF_R0 = (__bpf_call_base_args + insn->imm)(BPF_R1, BPF_R2,
11087cf7f27f46 Ard Biesheuvel 2020-10-28  387  							    BPF_R3, BPF_R4,
11087cf7f27f46 Ard Biesheuvel 2020-10-28  388  							    BPF_R5,
11087cf7f27f46 Ard Biesheuvel 2020-10-28  389  							    insn + insn->off + 1);
11087cf7f27f46 Ard Biesheuvel 2020-10-28  390  		CONT;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  391  
11087cf7f27f46 Ard Biesheuvel 2020-10-28  392  	JMP_TAIL_CALL: {
11087cf7f27f46 Ard Biesheuvel 2020-10-28  393  		struct bpf_map *map = (struct bpf_map *) (unsigned long) BPF_R2;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  394  		struct bpf_array *array = container_of(map, struct bpf_array, map);
11087cf7f27f46 Ard Biesheuvel 2020-10-28  395  		struct bpf_prog *prog;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  396  		u32 index = BPF_R3;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  397  
11087cf7f27f46 Ard Biesheuvel 2020-10-28  398  		if (unlikely(index >= array->map.max_entries))
11087cf7f27f46 Ard Biesheuvel 2020-10-28  399  			goto out;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  400  		if (unlikely(tail_call_cnt > MAX_TAIL_CALL_CNT))
11087cf7f27f46 Ard Biesheuvel 2020-10-28  401  			goto out;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  402  
11087cf7f27f46 Ard Biesheuvel 2020-10-28  403  		tail_call_cnt++;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  404  
11087cf7f27f46 Ard Biesheuvel 2020-10-28  405  		prog = READ_ONCE(array->ptrs[index]);
11087cf7f27f46 Ard Biesheuvel 2020-10-28  406  		if (!prog)
11087cf7f27f46 Ard Biesheuvel 2020-10-28  407  			goto out;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  408  
11087cf7f27f46 Ard Biesheuvel 2020-10-28  409  		/* ARG1 at this point is guaranteed to point to CTX from
11087cf7f27f46 Ard Biesheuvel 2020-10-28  410  		 * the verifier side due to the fact that the tail call is
11087cf7f27f46 Ard Biesheuvel 2020-10-28  411  		 * handled like a helper, that is, bpf_tail_call_proto,
11087cf7f27f46 Ard Biesheuvel 2020-10-28  412  		 * where arg1_type is ARG_PTR_TO_CTX.
11087cf7f27f46 Ard Biesheuvel 2020-10-28  413  		 */
11087cf7f27f46 Ard Biesheuvel 2020-10-28  414  		insn = prog->insnsi;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  415  		goto select_insn;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  416  out:
11087cf7f27f46 Ard Biesheuvel 2020-10-28  417  		CONT;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  418  	}
11087cf7f27f46 Ard Biesheuvel 2020-10-28  419  	JMP_JA:
11087cf7f27f46 Ard Biesheuvel 2020-10-28  420  		insn += insn->off;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  421  		CONT;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  422  	JMP_EXIT:
11087cf7f27f46 Ard Biesheuvel 2020-10-28  423  		return BPF_R0;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  424  	/* JMP */
11087cf7f27f46 Ard Biesheuvel 2020-10-28  425  #define COND_JMP(SIGN, OPCODE, CMP_OP)				\
11087cf7f27f46 Ard Biesheuvel 2020-10-28  426  	JMP_##OPCODE##_X:					\
11087cf7f27f46 Ard Biesheuvel 2020-10-28  427  		if ((SIGN##64) DST CMP_OP (SIGN##64) SRC) {	\
11087cf7f27f46 Ard Biesheuvel 2020-10-28  428  			insn += insn->off;			\
11087cf7f27f46 Ard Biesheuvel 2020-10-28  429  			CONT_JMP;				\
11087cf7f27f46 Ard Biesheuvel 2020-10-28  430  		}						\
11087cf7f27f46 Ard Biesheuvel 2020-10-28  431  		CONT;						\
11087cf7f27f46 Ard Biesheuvel 2020-10-28  432  	JMP32_##OPCODE##_X:					\
11087cf7f27f46 Ard Biesheuvel 2020-10-28  433  		if ((SIGN##32) DST CMP_OP (SIGN##32) SRC) {	\
11087cf7f27f46 Ard Biesheuvel 2020-10-28  434  			insn += insn->off;			\
11087cf7f27f46 Ard Biesheuvel 2020-10-28  435  			CONT_JMP;				\
11087cf7f27f46 Ard Biesheuvel 2020-10-28  436  		}						\
11087cf7f27f46 Ard Biesheuvel 2020-10-28  437  		CONT;						\
11087cf7f27f46 Ard Biesheuvel 2020-10-28  438  	JMP_##OPCODE##_K:					\
11087cf7f27f46 Ard Biesheuvel 2020-10-28  439  		if ((SIGN##64) DST CMP_OP (SIGN##64) IMM) {	\
11087cf7f27f46 Ard Biesheuvel 2020-10-28  440  			insn += insn->off;			\
11087cf7f27f46 Ard Biesheuvel 2020-10-28  441  			CONT_JMP;				\
11087cf7f27f46 Ard Biesheuvel 2020-10-28  442  		}						\
11087cf7f27f46 Ard Biesheuvel 2020-10-28  443  		CONT;						\
11087cf7f27f46 Ard Biesheuvel 2020-10-28  444  	JMP32_##OPCODE##_K:					\
11087cf7f27f46 Ard Biesheuvel 2020-10-28  445  		if ((SIGN##32) DST CMP_OP (SIGN##32) IMM) {	\
11087cf7f27f46 Ard Biesheuvel 2020-10-28  446  			insn += insn->off;			\
11087cf7f27f46 Ard Biesheuvel 2020-10-28  447  			CONT_JMP;				\
11087cf7f27f46 Ard Biesheuvel 2020-10-28  448  		}						\
11087cf7f27f46 Ard Biesheuvel 2020-10-28  449  		CONT;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  450  	COND_JMP(u, JEQ, ==)
11087cf7f27f46 Ard Biesheuvel 2020-10-28  451  	COND_JMP(u, JNE, !=)
11087cf7f27f46 Ard Biesheuvel 2020-10-28  452  	COND_JMP(u, JGT, >)
11087cf7f27f46 Ard Biesheuvel 2020-10-28  453  	COND_JMP(u, JLT, <)
11087cf7f27f46 Ard Biesheuvel 2020-10-28  454  	COND_JMP(u, JGE, >=)
11087cf7f27f46 Ard Biesheuvel 2020-10-28  455  	COND_JMP(u, JLE, <=)
11087cf7f27f46 Ard Biesheuvel 2020-10-28  456  	COND_JMP(u, JSET, &)
11087cf7f27f46 Ard Biesheuvel 2020-10-28  457  	COND_JMP(s, JSGT, >)
11087cf7f27f46 Ard Biesheuvel 2020-10-28  458  	COND_JMP(s, JSLT, <)
11087cf7f27f46 Ard Biesheuvel 2020-10-28  459  	COND_JMP(s, JSGE, >=)
11087cf7f27f46 Ard Biesheuvel 2020-10-28  460  	COND_JMP(s, JSLE, <=)
11087cf7f27f46 Ard Biesheuvel 2020-10-28  461  #undef COND_JMP
11087cf7f27f46 Ard Biesheuvel 2020-10-28  462  	/* STX and ST and LDX*/
11087cf7f27f46 Ard Biesheuvel 2020-10-28  463  #define LDST(SIZEOP, SIZE)						\
11087cf7f27f46 Ard Biesheuvel 2020-10-28  464  	STX_MEM_##SIZEOP:						\
11087cf7f27f46 Ard Biesheuvel 2020-10-28  465  		*(SIZE *)(unsigned long) (DST + insn->off) = SRC;	\
11087cf7f27f46 Ard Biesheuvel 2020-10-28  466  		CONT;							\
11087cf7f27f46 Ard Biesheuvel 2020-10-28  467  	ST_MEM_##SIZEOP:						\
11087cf7f27f46 Ard Biesheuvel 2020-10-28  468  		*(SIZE *)(unsigned long) (DST + insn->off) = IMM;	\
11087cf7f27f46 Ard Biesheuvel 2020-10-28  469  		CONT;							\
11087cf7f27f46 Ard Biesheuvel 2020-10-28  470  	LDX_MEM_##SIZEOP:						\
11087cf7f27f46 Ard Biesheuvel 2020-10-28  471  		DST = *(SIZE *)(unsigned long) (SRC + insn->off);	\
11087cf7f27f46 Ard Biesheuvel 2020-10-28  472  		CONT;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  473  
11087cf7f27f46 Ard Biesheuvel 2020-10-28  474  	LDST(B,   u8)
11087cf7f27f46 Ard Biesheuvel 2020-10-28  475  	LDST(H,  u16)
11087cf7f27f46 Ard Biesheuvel 2020-10-28  476  	LDST(W,  u32)
11087cf7f27f46 Ard Biesheuvel 2020-10-28  477  	LDST(DW, u64)
11087cf7f27f46 Ard Biesheuvel 2020-10-28  478  #undef LDST
11087cf7f27f46 Ard Biesheuvel 2020-10-28  479  #define LDX_PROBE(SIZEOP, SIZE)							\
11087cf7f27f46 Ard Biesheuvel 2020-10-28  480  	LDX_PROBE_MEM_##SIZEOP:							\
11087cf7f27f46 Ard Biesheuvel 2020-10-28  481  		bpf_probe_read_kernel(&DST, SIZE, (const void *)(long) (SRC + insn->off));	\
11087cf7f27f46 Ard Biesheuvel 2020-10-28  482  		CONT;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  483  	LDX_PROBE(B,  1)
11087cf7f27f46 Ard Biesheuvel 2020-10-28  484  	LDX_PROBE(H,  2)
11087cf7f27f46 Ard Biesheuvel 2020-10-28  485  	LDX_PROBE(W,  4)
11087cf7f27f46 Ard Biesheuvel 2020-10-28  486  	LDX_PROBE(DW, 8)
11087cf7f27f46 Ard Biesheuvel 2020-10-28  487  #undef LDX_PROBE
11087cf7f27f46 Ard Biesheuvel 2020-10-28  488  
11087cf7f27f46 Ard Biesheuvel 2020-10-28  489  	STX_XADD_W: /* lock xadd *(u32 *)(dst_reg + off16) += src_reg */
11087cf7f27f46 Ard Biesheuvel 2020-10-28  490  		atomic_add((u32) SRC, (atomic_t *)(unsigned long)
11087cf7f27f46 Ard Biesheuvel 2020-10-28  491  			   (DST + insn->off));
11087cf7f27f46 Ard Biesheuvel 2020-10-28  492  		CONT;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  493  	STX_XADD_DW: /* lock xadd *(u64 *)(dst_reg + off16) += src_reg */
11087cf7f27f46 Ard Biesheuvel 2020-10-28  494  		atomic64_add((u64) SRC, (atomic64_t *)(unsigned long)
11087cf7f27f46 Ard Biesheuvel 2020-10-28  495  			     (DST + insn->off));
11087cf7f27f46 Ard Biesheuvel 2020-10-28  496  		CONT;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  497  
11087cf7f27f46 Ard Biesheuvel 2020-10-28  498  	default_label:
11087cf7f27f46 Ard Biesheuvel 2020-10-28  499  		/* If we ever reach this, we have a bug somewhere. Die hard here
11087cf7f27f46 Ard Biesheuvel 2020-10-28  500  		 * instead of just returning 0; we could be somewhere in a subprog,
11087cf7f27f46 Ard Biesheuvel 2020-10-28  501  		 * so execution could continue otherwise which we do /not/ want.
11087cf7f27f46 Ard Biesheuvel 2020-10-28  502  		 *
11087cf7f27f46 Ard Biesheuvel 2020-10-28  503  		 * Note, verifier whitelists all opcodes in bpf_opcode_in_insntable().
11087cf7f27f46 Ard Biesheuvel 2020-10-28  504  		 */
11087cf7f27f46 Ard Biesheuvel 2020-10-28  505  		pr_warn("BPF interpreter: unknown opcode %02x\n", insn->code);
11087cf7f27f46 Ard Biesheuvel 2020-10-28  506  		BUG_ON(1);
11087cf7f27f46 Ard Biesheuvel 2020-10-28  507  		return 0;
11087cf7f27f46 Ard Biesheuvel 2020-10-28  508  }
11087cf7f27f46 Ard Biesheuvel 2020-10-28  509  

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

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 29264 bytes --]

             reply	other threads:[~2020-10-29  4:26 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-29  4:26 kernel test robot [this message]
  -- strict thread matches above, loose matches on Subject: below --
2020-10-28 17:15 [PATCH v2 0/2] get rid of GCC __attribute__((optimize)) for BPF Ard Biesheuvel
2020-10-28 17:15 ` [PATCH v2 2/2] bpf: move interpreter into separate source file Ard Biesheuvel

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202010291225.RONVAo77-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=kbuild@lists.01.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.