diff --git a/kernel/bpf/core.c b/kernel/bpf/core.c index 25f80d5d3..9159e381d 100644 --- a/kernel/bpf/core.c +++ b/kernel/bpf/core.c @@ -1654,14 +1654,15 @@ out: LDST(W, u32) LDST(DW, u64) #undef LDST -#define LDX_PROBE(SIZEOP, SIZE) \ +#define LDX_PROBE(SIZEOP, SIZE, TYPE) \ LDX_PROBE_MEM_##SIZEOP: \ bpf_probe_read_kernel(&DST, SIZE, (const void *)(long) (SRC + insn->off)); \ + DST = *((TYPE *)&DST); \ CONT; - LDX_PROBE(B, 1) - LDX_PROBE(H, 2) - LDX_PROBE(W, 4) - LDX_PROBE(DW, 8) + LDX_PROBE(B, 1, u8) + LDX_PROBE(H, 2, u16) + LDX_PROBE(W, 4, u32) + LDX_PROBE(DW, 8, u64) #undef LDX_PROBE STX_XADD_W: /* lock xadd *(u32 *)(dst_reg + off16) += src_reg */