[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20210427174313.860948-1-revest@chromium.org>
Date: Tue, 27 Apr 2021 19:43:11 +0200
From: Florent Revest <revest@...omium.org>
To: bpf@...r.kernel.org
Cc: ast@...nel.org, daniel@...earbox.net, andrii@...nel.org,
kpsingh@...nel.org, jackmanb@...gle.com, linux@...musvillemoes.dk,
rostedt@...dmis.org, linux-kernel@...r.kernel.org,
Florent Revest <revest@...omium.org>
Subject: [PATCH bpf-next v2 0/2] Implement formatted output helpers with bstr_printf
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
Powered by blists - more mailing lists