Messages in this thread | | | Date | Thu, 02 Sep 2021 13:56:47 -0700 | From | John Fastabend <> | Subject | RE: [PATCH v5 bpf-next 2/3] bpf: introduce helper bpf_get_branch_snapshot |
| |
Song Liu wrote: > Introduce bpf_get_branch_snapshot(), which allows tracing pogram to get > branch trace from hardware (e.g. Intel LBR). To use the feature, the > user need to create perf_event with proper branch_record filtering > on each cpu, and then calls bpf_get_branch_snapshot in the bpf function. > On Intel CPUs, VLBR event (raw event 0x1b00) can be use for this. > > Signed-off-by: Song Liu <songliubraving@fb.com> > ---
[...]
> > +BPF_CALL_3(bpf_get_branch_snapshot, void *, buf, u32, size, u64, flags) > +{ > +#ifndef CONFIG_X86 > + return -ENOENT; > +#else > + static const u32 br_entry_size = sizeof(struct perf_branch_entry); > + u32 entry_cnt = size / br_entry_size; > + > + if (unlikely(flags)) > + return -EINVAL; > + > + if (!buf || (size % br_entry_size != 0)) > + return -EINVAL;
LGTM, but why fail if buffer is slightly larger than expected? I guess its a slightly buggy program that would do this, but not actually harmful right?
Acked-by: John Fastabend <john.fastabend@gmail.com>
| |