diff options
Diffstat (limited to 'kernel/bpf')
| -rw-r--r-- | kernel/bpf/core.c | 14 | 
1 files changed, 5 insertions, 9 deletions
| diff --git a/kernel/bpf/core.c b/kernel/bpf/core.c index cacd8684c3c4..5f6f3f829b36 100644 --- a/kernel/bpf/core.c +++ b/kernel/bpf/core.c @@ -1953,6 +1953,11 @@ out:  		CONT;							\  	LDX_MEM_##SIZEOP:						\  		DST = *(SIZE *)(unsigned long) (SRC + insn->off);	\ +		CONT;							\ +	LDX_PROBE_MEM_##SIZEOP:						\ +		bpf_probe_read_kernel(&DST, sizeof(SIZE),		\ +				      (const void *)(long) (SRC + insn->off));	\ +		DST = *((SIZE *)&DST);					\  		CONT;  	LDST(B,   u8) @@ -1960,15 +1965,6 @@ out:  	LDST(W,  u32)  	LDST(DW, u64)  #undef LDST -#define LDX_PROBE(SIZEOP, SIZE)							\ -	LDX_PROBE_MEM_##SIZEOP:							\ -		bpf_probe_read_kernel(&DST, SIZE, (const void *)(long) (SRC + insn->off));	\ -		CONT; -	LDX_PROBE(B,  1) -	LDX_PROBE(H,  2) -	LDX_PROBE(W,  4) -	LDX_PROBE(DW, 8) -#undef LDX_PROBE  #define ATOMIC_ALU_OP(BOP, KOP)						\  		case BOP:						\ | 
