2023-05-25 00:20:49

by Namhyung Kim

[permalink] [raw]
Subject: [PATCH] perf bpf filter: Fix a broken perf sample data naming in BPF

BPF CO-RE requires 3 underscores for the ignored suffix rule but it
mistakenly used only 2. Let's fix it.

Fixes: 3a8b8fc31748 ("perf bpf filter: Support pre-5.16 kernels where 'mem_hops' isn't in 'union perf_mem_data_src'")
Signed-off-by: Namhyung Kim <[email protected]>
---
tools/perf/util/bpf_skel/sample_filter.bpf.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tools/perf/util/bpf_skel/sample_filter.bpf.c b/tools/perf/util/bpf_skel/sample_filter.bpf.c
index cffe493af1ed..fb94f5280626 100644
--- a/tools/perf/util/bpf_skel/sample_filter.bpf.c
+++ b/tools/perf/util/bpf_skel/sample_filter.bpf.c
@@ -25,7 +25,7 @@ struct perf_sample_data___new {
} __attribute__((preserve_access_index));

/* new kernel perf_mem_data_src definition */
-union perf_mem_data_src__new {
+union perf_mem_data_src___new {
__u64 val;
struct {
__u64 mem_op:5, /* type of opcode */
@@ -108,7 +108,7 @@ static inline __u64 perf_get_sample(struct bpf_perf_event_data_kern *kctx,
if (entry->part == 7)
return kctx->data->data_src.mem_blk;
if (entry->part == 8) {
- union perf_mem_data_src__new *data = (void *)&kctx->data->data_src;
+ union perf_mem_data_src___new *data = (void *)&kctx->data->data_src;

if (bpf_core_field_exists(data->mem_hops))
return data->mem_hops;
--
2.41.0.rc0.172.g3f132b7071-goog



2023-05-25 18:04:18

by Andrii Nakryiko

[permalink] [raw]
Subject: Re: [PATCH] perf bpf filter: Fix a broken perf sample data naming in BPF

On Wed, May 24, 2023 at 5:03 PM Namhyung Kim <[email protected]> wrote:
>
> BPF CO-RE requires 3 underscores for the ignored suffix rule but it
> mistakenly used only 2. Let's fix it.
>
> Fixes: 3a8b8fc31748 ("perf bpf filter: Support pre-5.16 kernels where 'mem_hops' isn't in 'union perf_mem_data_src'")
> Signed-off-by: Namhyung Kim <[email protected]>
> ---
> tools/perf/util/bpf_skel/sample_filter.bpf.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>

Seems like that's the only remaining case. LGTM.

Acked-by: Andrii Nakryiko <[email protected]>

> diff --git a/tools/perf/util/bpf_skel/sample_filter.bpf.c b/tools/perf/util/bpf_skel/sample_filter.bpf.c
> index cffe493af1ed..fb94f5280626 100644
> --- a/tools/perf/util/bpf_skel/sample_filter.bpf.c
> +++ b/tools/perf/util/bpf_skel/sample_filter.bpf.c
> @@ -25,7 +25,7 @@ struct perf_sample_data___new {
> } __attribute__((preserve_access_index));
>
> /* new kernel perf_mem_data_src definition */
> -union perf_mem_data_src__new {
> +union perf_mem_data_src___new {
> __u64 val;
> struct {
> __u64 mem_op:5, /* type of opcode */
> @@ -108,7 +108,7 @@ static inline __u64 perf_get_sample(struct bpf_perf_event_data_kern *kctx,
> if (entry->part == 7)
> return kctx->data->data_src.mem_blk;
> if (entry->part == 8) {
> - union perf_mem_data_src__new *data = (void *)&kctx->data->data_src;
> + union perf_mem_data_src___new *data = (void *)&kctx->data->data_src;
>
> if (bpf_core_field_exists(data->mem_hops))
> return data->mem_hops;
> --
> 2.41.0.rc0.172.g3f132b7071-goog
>
>

2023-05-26 07:07:43

by John Fastabend

[permalink] [raw]
Subject: RE: [PATCH] perf bpf filter: Fix a broken perf sample data naming in BPF

Namhyung Kim wrote:
> BPF CO-RE requires 3 underscores for the ignored suffix rule but it
> mistakenly used only 2. Let's fix it.
>
> Fixes: 3a8b8fc31748 ("perf bpf filter: Support pre-5.16 kernels where 'mem_hops' isn't in 'union perf_mem_data_src'")
> Signed-off-by: Namhyung Kim <[email protected]>
> ---
> tools/perf/util/bpf_skel/sample_filter.bpf.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/tools/perf/util/bpf_skel/sample_filter.bpf.c b/tools/perf/util/bpf_skel/sample_filter.bpf.c
> index cffe493af1ed..fb94f5280626 100644
> --- a/tools/perf/util/bpf_skel/sample_filter.bpf.c
> +++ b/tools/perf/util/bpf_skel/sample_filter.bpf.c
> @@ -25,7 +25,7 @@ struct perf_sample_data___new {
> } __attribute__((preserve_access_index));
>
> /* new kernel perf_mem_data_src definition */
> -union perf_mem_data_src__new {
> +union perf_mem_data_src___new {
> __u64 val;
> struct {
> __u64 mem_op:5, /* type of opcode */
> @@ -108,7 +108,7 @@ static inline __u64 perf_get_sample(struct bpf_perf_event_data_kern *kctx,
> if (entry->part == 7)
> return kctx->data->data_src.mem_blk;
> if (entry->part == 8) {
> - union perf_mem_data_src__new *data = (void *)&kctx->data->data_src;
> + union perf_mem_data_src___new *data = (void *)&kctx->data->data_src;
>
> if (bpf_core_field_exists(data->mem_hops))
> return data->mem_hops;
> --
> 2.41.0.rc0.172.g3f132b7071-goog
>
>

Acked-by: John Fastabend <[email protected]>

2023-05-26 18:43:36

by Arnaldo Carvalho de Melo

[permalink] [raw]
Subject: Re: [PATCH] perf bpf filter: Fix a broken perf sample data naming in BPF

Em Thu, May 25, 2023 at 11:53:09PM -0700, John Fastabend escreveu:
> Namhyung Kim wrote:
> > BPF CO-RE requires 3 underscores for the ignored suffix rule but it
> > mistakenly used only 2. Let's fix it.
> >
> > Fixes: 3a8b8fc31748 ("perf bpf filter: Support pre-5.16 kernels where 'mem_hops' isn't in 'union perf_mem_data_src'")
> > Signed-off-by: Namhyung Kim <[email protected]>
> > ---
> > tools/perf/util/bpf_skel/sample_filter.bpf.c | 4 ++--
> > 1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/tools/perf/util/bpf_skel/sample_filter.bpf.c b/tools/perf/util/bpf_skel/sample_filter.bpf.c
> > index cffe493af1ed..fb94f5280626 100644
> > --- a/tools/perf/util/bpf_skel/sample_filter.bpf.c
> > +++ b/tools/perf/util/bpf_skel/sample_filter.bpf.c
> > @@ -25,7 +25,7 @@ struct perf_sample_data___new {
> > } __attribute__((preserve_access_index));
> >
> > /* new kernel perf_mem_data_src definition */
> > -union perf_mem_data_src__new {
> > +union perf_mem_data_src___new {
> > __u64 val;
> > struct {
> > __u64 mem_op:5, /* type of opcode */
> > @@ -108,7 +108,7 @@ static inline __u64 perf_get_sample(struct bpf_perf_event_data_kern *kctx,
> > if (entry->part == 7)
> > return kctx->data->data_src.mem_blk;
> > if (entry->part == 8) {
> > - union perf_mem_data_src__new *data = (void *)&kctx->data->data_src;
> > + union perf_mem_data_src___new *data = (void *)&kctx->data->data_src;
> >
> > if (bpf_core_field_exists(data->mem_hops))
> > return data->mem_hops;
> > --
> > 2.41.0.rc0.172.g3f132b7071-goog
> >
> >
>
> Acked-by: John Fastabend <[email protected]>

Thanks, applied.

- Arnaldo