forked from mirrors/linux
		
	s390/bpf: clear correct BPF accumulator register
Currently we assumed the following BPF to eBPF register mapping:
 - BPF_REG_A -> BPF_REG_7
 - BPF_REG_X -> BPF_REG_8
Unfortunately this mapping is wrong. The correct mapping is:
 - BPF_REG_A -> BPF_REG_0
 - BPF_REG_X -> BPF_REG_7
So clear the correct registers and use the BPF_REG_A and BPF_REG_X
macros instead of BPF_REG_0/7.
Fixes: 0546231057 ("s390/bpf: Add s390x eBPF JIT compiler backend")
Cc: stable@vger.kernel.org # 4.0+
Signed-off-by: Michael Holzheu <holzheu@linux.vnet.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
			
			
This commit is contained in:
		
							parent
							
								
									35e455f47a
								
							
						
					
					
						commit
						f75298f5c3
					
				
					 1 changed files with 7 additions and 7 deletions
				
			
		|  | @ -448,13 +448,13 @@ static void bpf_jit_prologue(struct bpf_jit *jit) | |||
| 		EMIT6_DISP_LH(0xe3000000, 0x0004, REG_SKB_DATA, REG_0, | ||||
| 			      BPF_REG_1, offsetof(struct sk_buff, data)); | ||||
| 	} | ||||
| 	/* BPF compatibility: clear A (%b7) and X (%b8) registers */ | ||||
| 	if (REG_SEEN(BPF_REG_7)) | ||||
| 		/* lghi %b7,0 */ | ||||
| 		EMIT4_IMM(0xa7090000, BPF_REG_7, 0); | ||||
| 	if (REG_SEEN(BPF_REG_8)) | ||||
| 		/* lghi %b8,0 */ | ||||
| 		EMIT4_IMM(0xa7090000, BPF_REG_8, 0); | ||||
| 	/* BPF compatibility: clear A (%b0) and X (%b7) registers */ | ||||
| 	if (REG_SEEN(BPF_REG_A)) | ||||
| 		/* lghi %ba,0 */ | ||||
| 		EMIT4_IMM(0xa7090000, BPF_REG_A, 0); | ||||
| 	if (REG_SEEN(BPF_REG_X)) | ||||
| 		/* lghi %bx,0 */ | ||||
| 		EMIT4_IMM(0xa7090000, BPF_REG_X, 0); | ||||
| } | ||||
| 
 | ||||
| /*
 | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Michael Holzheu
						Michael Holzheu