Messages in this thread | | | From | Florent Revest <> | Subject | [PATCH bpf-next v2 0/2] Implement formatted output helpers with bstr_printf | Date | Tue, 27 Apr 2021 19:43:11 +0200 |
| |
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
| |