mbox series

[RFC,bpf-next,0/5] Do not include the original insn in zext patchlet

Message ID 20200909233439.3100292-1-iii@linux.ibm.com
Headers show
Series Do not include the original insn in zext patchlet | expand

Message

Ilya Leoshkevich Sept. 9, 2020, 11:34 p.m. UTC
Hi!

This patch series attempts to fix test_progs failure on s390, which
Yauheni reported here:

https://lore.kernel.org/bpf/20200903140542.156624-1-yauheni.kaliuta@redhat.com/

The problem is that zext code includes the instruction, whose result
needs to be zero-extended, into the zero-extension patchlet. If this
instruction happens to be a call, its delta is not adjusted, and as a
result verifier rejects the program later.

The code seems to have been written this way, because there is no helper
function to insert bpf instructions: currently one can either replace or
remove. So insertion seems to have been emulated with replacement.

Patches 1-4 teach bpf_patch_insn_data() how to insert (by accepting
variable number of old insns, which is normally 1, but can now be 0
too). Patch 5 uses this new capability to resolve the issue.

Ilya Leoshkevich (5):
  bpf: Make bpf_patch_insn_single() accept variable number of old insns
  bpf: Make adjust_insn_aux_data() accept variable number of old insns
  bpf: Make adjust_subprog_starts() accept variable number of old insns
  bpf: Make bpf_patch_insn_data() accept variable number of old insns
  bpf: Do not include the original insn in zext patchlet

 include/linux/filter.h |   4 +-
 kernel/bpf/core.c      |  18 ++++----
 kernel/bpf/verifier.c  | 100 ++++++++++++++++++++++++-----------------
 3 files changed, 70 insertions(+), 52 deletions(-)