bpf.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 bpf-next 0/3] Improve verifier log readability
@ 2021-12-15 19:22 Christy Lee
  2021-12-15 19:22 ` [PATCH v2 bpf-next 1/3] Only print scratched registers and stack slots to verifier logs Christy Lee
                   ` (2 more replies)
  0 siblings, 3 replies; 10+ messages in thread
From: Christy Lee @ 2021-12-15 19:22 UTC (permalink / raw)
  To: ast, daniel, andrii; +Cc: bpf, kernel-team, christylee, christyc.y.lee

Simplify verifier logs and improve readability.

Changelog:
----------
v1 -> v2:
v1: https://lore.kernel.org/bpf/20211213182117.682461-1-christylee@fb.com/

Patch 2/3:
* Verifier will skip insn_idx when the insn is longer than 8 bytes,
  example:
  0000000000000000 <good_prog>:
       0:	18 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00	r2 = 0 ll
       2:	63 12 00 00 00 00 00 00	*(u32 *)(r2 + 0) = r1
       3:	61 20 04 00 00 00 00 00	r0 = *(u32 *)(r2 + 4)
       4:	95 00 00 00 00 00 00 00	exit
  It's incorrect to check that prev_insn_idx = insn_idx - 1, skip this
  check and print the verifier state on the correct line.
  Before:
  0: R1=ctx(id=0,off=0,imm=0) R10=fp0
  ; a[0] = (int)(long)ctx;
  0: (18) r2 = 0xffffc900006de000
  2: R2_w=map_value(id=0,off=0,ks=4,vs=16,imm=0)
  2: (63) *(u32 *)(r2 +0) = r1
  After:
  0: R1=ctx(id=0,off=0,imm=0) R10=fp0
  ; a[0] = (int)(long)ctx;
  0: (18) r2 = 0xffffc900006de000 ; R2_w=map_value(id=0,off=0,ks=4,vs=16,imm=0)
  2: (63) *(u32 *)(r2 +0) = r1
* Track previous line logging length in env, allow aligning intsruction
  from anywhere in the verifier
* Fixed bug where the verifier printed verifier state after checking
  source memory access but before check destination memory access,
  this ensures the aligned verifier state contains all scratched
  registers

Patch 3/3:
* Added one more case where we should only log in log_level=2

Christy Lee (3):
  Only print scratched registers and stack slots to verifier logs
  Right align verifier states in verifier logs
  Only output backtracking information in log level 2

 include/linux/bpf_verifier.h                  |  10 +
 kernel/bpf/verifier.c                         | 131 +++++++++--
 .../testing/selftests/bpf/prog_tests/align.c  | 214 +++++++++---------
 3 files changed, 232 insertions(+), 123 deletions(-)

--
2.30.2

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2021-12-16 19:37 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-12-15 19:22 [PATCH v2 bpf-next 0/3] Improve verifier log readability Christy Lee
2021-12-15 19:22 ` [PATCH v2 bpf-next 1/3] Only print scratched registers and stack slots to verifier logs Christy Lee
2021-12-16  7:02   ` Andrii Nakryiko
     [not found]     ` <CAPqJDZpuZ586TawooQhxZGvOqgF4yCjT0yOLEXAUer8eJDO7gw@mail.gmail.com>
2021-12-16 16:02       ` Christy Lee
2021-12-15 19:22 ` [PATCH v2 bpf-next 2/3] Right align verifier states in " Christy Lee
2021-12-16  7:02   ` Andrii Nakryiko
     [not found]     ` <CAPqJDZr1AudE2PfbZQarHf0N5i_-xm-zyhfLqS5rogX98UtNLQ@mail.gmail.com>
2021-12-16 16:03       ` Christy Lee
2021-12-16 19:37         ` Andrii Nakryiko
2021-12-15 19:22 ` [PATCH v2 bpf-next 3/3] Only output backtracking information in log level 2 Christy Lee
2021-12-16  7:02   ` Andrii Nakryiko

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).