s390/bpf: Fix multiple macro expansions
The EMIT6_DISP_LH macro passes the "disp" parameter to the _EMIT6_DISP_LH macro. The _EMIT6_DISP_LH macro uses the "disp" parameter twice: unsigned int __disp_h = ((u32)disp) & 0xff000; unsigned int __disp_l = ((u32)disp) & 0x00fff; The EMIT6_DISP_LH is used several times with EMIT_CONST_U64() as "disp" parameter. Therefore always two constants are created per usage of EMIT6_DISP_LH. Fix this and add variable "_disp" to avoid multiple expansions. * v2: Move "_disp" to _EMIT6_DISP_LH as suggested by Joe Perches Fixes: 054623105728 ("s390/bpf: Add s390x eBPF JIT compiler backend") 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
f75298f5c3
commit
1df03ffdde
@ -214,8 +214,9 @@ static inline void reg_set_seen(struct bpf_jit *jit, u32 b1)
|
||||
|
||||
#define _EMIT6_DISP_LH(op1, op2, disp) \
|
||||
({ \
|
||||
unsigned int __disp_h = ((u32)disp) & 0xff000; \
|
||||
unsigned int __disp_l = ((u32)disp) & 0x00fff; \
|
||||
u32 _disp = (u32) disp; \
|
||||
unsigned int __disp_h = _disp & 0xff000; \
|
||||
unsigned int __disp_l = _disp & 0x00fff; \
|
||||
_EMIT6(op1 | __disp_l, op2 | __disp_h >> 4); \
|
||||
})
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user