This patch series implements jump padding to x64 jit to cover some
corner cases that used to consume more than 20 jit passes and caused
failure.
v3:
- Copy the instructions of prologue separately or the size calculation
of the first BPF instruction would include the prologue.
- Replace WARN_ONCE() with pr_err() and EFAULT
- Use MAX_PASSES in the for loop condition check
- Remove the "padded" flag from x64_jit_data. For the extra pass of
subprogs, padding is always enabled since it won't hurt the images
that converge without padding.
v2:
- Simplify the sample code in the commit description and provide the
jit code
- Check the expected padding bytes with WARN_ONCE
- Move the 'padded' flag to 'struct x64_jit_data'
- Remove the EXPECTED_FAIL flag from bpf_fill_maxinsns11() in test_bpf
- Add 2 verifier tests
Gary Lin (3):
bpf,x64: pad NOPs to make images converge more easily
test_bpf: remove EXPECTED_FAIL flag from bpf_fill_maxinsns11
selftests/bpf: Add verifier test for x64 jit jump padding
arch/x86/net/bpf_jit_comp.c | 86 +++++++++++++++------
lib/test_bpf.c | 7 +-
tools/testing/selftests/bpf/test_verifier.c | 43 +++++++++++
tools/testing/selftests/bpf/verifier/jit.c | 16 ++++
4 files changed, 122 insertions(+), 30 deletions(-)
--
2.29.2
Gary Lin (3):
bpf,x64: pad NOPs to make images converge more easily
test_bpf: remove EXPECTED_FAIL flag from bpf_fill_maxinsns11
selftests/bpf: Add verifier test for x64 jit jump padding
arch/x86/net/bpf_jit_comp.c | 103 ++++++++++++++------
lib/test_bpf.c | 7 +-
tools/testing/selftests/bpf/test_verifier.c | 43 ++++++++
tools/testing/selftests/bpf/verifier/jit.c | 16 +++
4 files changed, 135 insertions(+), 34 deletions(-)
--
2.29.2