bpf_trace_printk uses a shared static buffer to hold strings before they
are printed. A recent refactoring moved the locking of that buffer after
it gets filled by mistake.
Fixes: d9c9e4db186a ("bpf: Factorize bpf_trace_printk and bpf_seq_printf")
Reported-by: Rasmus Villemoes <[email protected]>
Signed-off-by: Florent Revest <[email protected]>
---
kernel/trace/bpf_trace.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kernel/trace/bpf_trace.c b/kernel/trace/bpf_trace.c
index 2a8bcdc927c7..0e67d12a8f40 100644
--- a/kernel/trace/bpf_trace.c
+++ b/kernel/trace/bpf_trace.c
@@ -391,13 +391,13 @@ BPF_CALL_5(bpf_trace_printk, char *, fmt, u32, fmt_size, u64, arg1,
if (ret < 0)
return ret;
+ raw_spin_lock_irqsave(&trace_printk_lock, flags);
ret = snprintf(buf, sizeof(buf), fmt, BPF_CAST_FMT_ARG(0, args, mod),
BPF_CAST_FMT_ARG(1, args, mod), BPF_CAST_FMT_ARG(2, args, mod));
/* snprintf() will not append null for zero-length strings */
if (ret == 0)
buf[0] = '\0';
- raw_spin_lock_irqsave(&trace_printk_lock, flags);
trace_bpf_trace_printk(buf);
raw_spin_unlock_irqrestore(&trace_printk_lock, flags);
--
2.31.1.498.g6c1eba8ee3d-goog
On Tue, Apr 27, 2021 at 4:30 AM Florent Revest <[email protected]> wrote:
>
> bpf_trace_printk uses a shared static buffer to hold strings before they
> are printed. A recent refactoring moved the locking of that buffer after
> it gets filled by mistake.
>
> Fixes: d9c9e4db186a ("bpf: Factorize bpf_trace_printk and bpf_seq_printf")
> Reported-by: Rasmus Villemoes <[email protected]>
> Signed-off-by: Florent Revest <[email protected]>
Applied.
Pls send v2 of bstr_printf series as soon as possible. Thanks!
On Tue, Apr 27, 2021 at 8:20 AM Florent Revest <[email protected]> wrote:
>
> On Tue, Apr 27, 2021 at 5:08 PM Alexei Starovoitov
> <[email protected]> wrote:
> >
> > On Tue, Apr 27, 2021 at 4:30 AM Florent Revest <[email protected]> wrote:
> > >
> > > bpf_trace_printk uses a shared static buffer to hold strings before they
> > > are printed. A recent refactoring moved the locking of that buffer after
> > > it gets filled by mistake.
> > >
> > > Fixes: d9c9e4db186a ("bpf: Factorize bpf_trace_printk and bpf_seq_printf")
> > > Reported-by: Rasmus Villemoes <[email protected]>
> > > Signed-off-by: Florent Revest <[email protected]>
> >
> > Applied.
>
> Thanks!
>
> > Pls send v2 of bstr_printf series as soon as possible. Thanks!
>
> Sure, I just assumed there would be more reviews on v1. The feedback
> I'll address is only about the commit description wording but I can
> send a v2 today.
Yes. Please.
On Tue, Apr 27, 2021 at 5:08 PM Alexei Starovoitov
<[email protected]> wrote:
>
> On Tue, Apr 27, 2021 at 4:30 AM Florent Revest <[email protected]> wrote:
> >
> > bpf_trace_printk uses a shared static buffer to hold strings before they
> > are printed. A recent refactoring moved the locking of that buffer after
> > it gets filled by mistake.
> >
> > Fixes: d9c9e4db186a ("bpf: Factorize bpf_trace_printk and bpf_seq_printf")
> > Reported-by: Rasmus Villemoes <[email protected]>
> > Signed-off-by: Florent Revest <[email protected]>
>
> Applied.
Thanks!
> Pls send v2 of bstr_printf series as soon as possible. Thanks!
Sure, I just assumed there would be more reviews on v1. The feedback
I'll address is only about the commit description wording but I can
send a v2 today.