bpf, x32: Fix regression caused by commit 24dea04767e6
Subsystems (5)
Wang YanQing
maintainerPATCH 1/1 bpf, x32: Fix regression caused by commit 24dea04767e6
Commit 24dea04767e6 ("bpf, x32: remove ld_abs/ld_ind") removed the 4 /* Extra space for skb_copy_bits buffer */ from _STACK_SIZE, but it didn't fix the concerned code in emit_prologue and emit_epilogue, and this error will bring very strange kernel runtime errors.
This patch fix it.
--- arch/x86/net/bpf_jit_comp32.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
arch/x86/net/bpf_jit_comp32.c +4 -4
@@ -1441,8 +1441,8 @@ static void emit_prologue(u8 **pprog, u32 stack_depth)/* sub esp,STACK_SIZE */ EMIT2_off32 (0x81 ,0xEC ,STACK_SIZE ); -/* sub ebp,SCRATCH_SIZE+4+12*/ -EMIT3 (0x83 ,add_1reg (0xE8 ,IA32_EBP ),SCRATCH_SIZE +16 ); +/* sub ebp,SCRATCH_SIZE+12*/ +EMIT3 (0x83 ,add_1reg (0xE8 ,IA32_EBP ),SCRATCH_SIZE +12 );/* xor ebx,ebx */ EMIT2 (0x31 ,add_2reg (0xC0 ,IA32_EBX ,IA32_EBX ));
@@ -1475,8 +1475,8 @@ static void emit_epilogue(u8 **pprog, u32 stack_depth)/* mov edx,dword ptr [ebp+off]*/ EMIT3 (0x8B ,add_2reg (0x40 ,IA32_EBP ,IA32_EDX ),STACK_VAR (r0[1 ])); -/* add ebp,SCRATCH_SIZE+4+12*/ -EMIT3 (0x83 ,add_1reg (0xC0 ,IA32_EBP ),SCRATCH_SIZE +16 ); +/* add ebp,SCRATCH_SIZE+12*/ +EMIT3 (0x83 ,add_1reg (0xC0 ,IA32_EBP ),SCRATCH_SIZE +12 );/* mov ebx,dword ptr [ebp-12]*/ EMIT3 (0x8B ,add_2reg (0x40 ,IA32_EBP ,IA32_EBX ),-12 );
Signature · 1 line
1.8.5.6.2.g3d8a54e.dirty
Quoted 10 lines · Wang YanQing
Commit
24dea04767e6("bpf, x32: remove ld_abs/ld_ind") removed the 4 /* Extra space forskb_copy_bitsbuffer */ from_STACK_SIZE, but it didn't fix the concerned code inemit_prologueandemit_epilogue, and this error will bring very strange kernel runtime errors.This patch fix it.
Fixes 24dea04767e6 ("bpf, x32: remove ld_abs/ld_ind")Signed-off-by Wang YanQing <[email protected]>
Applied, thanks Wang!
Quoted 7 lines
Commit
24dea04767e6("bpf, x32: remove ld_abs/ld_ind") removed the 4 /* Extra space forskb_copy_bitsbuffer */ from_STACK_SIZE, but it didn't fix the concerned code inemit_prologueandemit_epilogue, and this error will bring very strange kernel runtime errors.This patch fix it.
For the record:
Tested it on top of 4.18.0-rc6-00192-g864af0d40cdc on the affected machine and it worked.
Signature · 1 line
Meelis Roos ([email protected])