bpf.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH bpf-next v2 0/2] Implement formatted output helpers with bstr_printf
@ 2021-04-27 17:43 Florent Revest
  2021-04-27 17:43 ` [PATCH bpf-next v2 1/2] seq_file: Add a seq_bprintf function Florent Revest
  2021-04-27 17:43 ` [PATCH bpf-next v2 2/2] bpf: Implement formatted output helpers with bstr_printf Florent Revest
  0 siblings, 2 replies; 7+ messages in thread
From: Florent Revest @ 2021-04-27 17:43 UTC (permalink / raw)
  To: bpf
  Cc: ast, daniel, andrii, kpsingh, jackmanb, linux, rostedt,
	linux-kernel, Florent Revest

BPF's formatted output helpers are currently implemented with
snprintf-like functions which use variadic arguments. The types of all
arguments need to be known at compilation time. BPF_CAST_FMT_ARG casts
all arguments to the size they should be (known at runtime), but the C
type promotion rules cast them back to u64s. On 32 bit architectures,
this can cause misaligned va_lists and generate mangled output.

This series refactors these helpers to avoid variadic arguments. It uses
a "binary printf" instead, where arguments are passed in a buffer
constructed at runtime.

---
Changes in v2:
- Reworded the second patch's description to better describe how
  arguments get mangled on 32 bit architectures

Florent Revest (2):
  seq_file: Add a seq_bprintf function
  bpf: Implement formatted output helpers with bstr_printf

 fs/seq_file.c            |  18 ++++
 include/linux/bpf.h      |  22 +----
 include/linux/seq_file.h |   4 +
 init/Kconfig             |   1 +
 kernel/bpf/helpers.c     | 188 +++++++++++++++++++++------------------
 kernel/bpf/verifier.c    |   2 +-
 kernel/trace/bpf_trace.c |  34 +++----
 7 files changed, 137 insertions(+), 132 deletions(-)

-- 
2.31.1.498.g6c1eba8ee3d-goog


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

end of thread, other threads:[~2021-04-28 14:52 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-04-27 17:43 [PATCH bpf-next v2 0/2] Implement formatted output helpers with bstr_printf Florent Revest
2021-04-27 17:43 ` [PATCH bpf-next v2 1/2] seq_file: Add a seq_bprintf function Florent Revest
2021-04-27 17:43 ` [PATCH bpf-next v2 2/2] bpf: Implement formatted output helpers with bstr_printf Florent Revest
2021-04-27 23:46   ` Alexei Starovoitov
2021-04-28  0:20     ` Florent Revest
2021-04-28  0:51       ` Alexei Starovoitov
2021-04-28 14:52         ` Florent Revest

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).