test: bpf: add a testcase reduced from nmap
nmap generates classic BPF programs to filter ARP packets with given target MAC
which triggered a bug in eBPF x64 JIT. The bug was fixed in
commit e0ee9c1215 ("x86: bpf_jit: fix two bugs in eBPF JIT compiler")
This patch is adding a testcase in eBPF instructions (those that
were generated by classic->eBPF converter) to be processed by JIT.
The test is primarily targeting JIT compiler.
Signed-off-by: Alexei Starovoitov <ast@plumgrid.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
	
	
This commit is contained in:
		
					parent
					
						
							
								342ded4096
							
						
					
				
			
			
				commit
				
					
						e21ab36a80
					
				
			
		
					 1 changed files with 43 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -1756,6 +1756,49 @@ static struct bpf_test tests[] = {
 | 
			
		|||
		{ },
 | 
			
		||||
		{ { 0, 1 } }
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		"nmap reduced",
 | 
			
		||||
		.u.insns_int = {
 | 
			
		||||
			BPF_MOV64_REG(R6, R1),
 | 
			
		||||
			BPF_LD_ABS(BPF_H, 12),
 | 
			
		||||
			BPF_JMP_IMM(BPF_JNE, R0, 0x806, 28),
 | 
			
		||||
			BPF_LD_ABS(BPF_H, 12),
 | 
			
		||||
			BPF_JMP_IMM(BPF_JNE, R0, 0x806, 26),
 | 
			
		||||
			BPF_MOV32_IMM(R0, 18),
 | 
			
		||||
			BPF_STX_MEM(BPF_W, R10, R0, -64),
 | 
			
		||||
			BPF_LDX_MEM(BPF_W, R7, R10, -64),
 | 
			
		||||
			BPF_LD_IND(BPF_W, R7, 14),
 | 
			
		||||
			BPF_STX_MEM(BPF_W, R10, R0, -60),
 | 
			
		||||
			BPF_MOV32_IMM(R0, 280971478),
 | 
			
		||||
			BPF_STX_MEM(BPF_W, R10, R0, -56),
 | 
			
		||||
			BPF_LDX_MEM(BPF_W, R7, R10, -56),
 | 
			
		||||
			BPF_LDX_MEM(BPF_W, R0, R10, -60),
 | 
			
		||||
			BPF_ALU32_REG(BPF_SUB, R0, R7),
 | 
			
		||||
			BPF_JMP_IMM(BPF_JNE, R0, 0, 15),
 | 
			
		||||
			BPF_LD_ABS(BPF_H, 12),
 | 
			
		||||
			BPF_JMP_IMM(BPF_JNE, R0, 0x806, 13),
 | 
			
		||||
			BPF_MOV32_IMM(R0, 22),
 | 
			
		||||
			BPF_STX_MEM(BPF_W, R10, R0, -56),
 | 
			
		||||
			BPF_LDX_MEM(BPF_W, R7, R10, -56),
 | 
			
		||||
			BPF_LD_IND(BPF_H, R7, 14),
 | 
			
		||||
			BPF_STX_MEM(BPF_W, R10, R0, -52),
 | 
			
		||||
			BPF_MOV32_IMM(R0, 17366),
 | 
			
		||||
			BPF_STX_MEM(BPF_W, R10, R0, -48),
 | 
			
		||||
			BPF_LDX_MEM(BPF_W, R7, R10, -48),
 | 
			
		||||
			BPF_LDX_MEM(BPF_W, R0, R10, -52),
 | 
			
		||||
			BPF_ALU32_REG(BPF_SUB, R0, R7),
 | 
			
		||||
			BPF_JMP_IMM(BPF_JNE, R0, 0, 2),
 | 
			
		||||
			BPF_MOV32_IMM(R0, 256),
 | 
			
		||||
			BPF_EXIT_INSN(),
 | 
			
		||||
			BPF_MOV32_IMM(R0, 0),
 | 
			
		||||
			BPF_EXIT_INSN(),
 | 
			
		||||
		},
 | 
			
		||||
		INTERNAL,
 | 
			
		||||
		{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x08, 0x06, 0, 0,
 | 
			
		||||
		  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
		  0x10, 0xbf, 0x48, 0xd6, 0x43, 0xd6},
 | 
			
		||||
		{ { 38, 256 } }
 | 
			
		||||
	},
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static struct net_device dev;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue