2022-03-06 13:30:03

by Muhammad Falak R Wani

[permalink] [raw]
Subject: [PATCH bpf-next] samples/bpf: fix broken bpf programs due to function inlining

commit: "be6bfe36db17 block: inline hot paths of blk_account_io_*()"
inlines the function `blk_account_io_done`. As a result we can't attach a
kprobe to the function anymore. Use `__blk_account_io_done` instead.

Signed-off-by: Muhammad Falak R Wani <[email protected]>
---
samples/bpf/task_fd_query_kern.c | 2 +-
samples/bpf/tracex3_kern.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/samples/bpf/task_fd_query_kern.c b/samples/bpf/task_fd_query_kern.c
index c821294e1774..186ac0a79c0a 100644
--- a/samples/bpf/task_fd_query_kern.c
+++ b/samples/bpf/task_fd_query_kern.c
@@ -10,7 +10,7 @@ int bpf_prog1(struct pt_regs *ctx)
return 0;
}

-SEC("kretprobe/blk_account_io_done")
+SEC("kretprobe/__blk_account_io_done")
int bpf_prog2(struct pt_regs *ctx)
{
return 0;
diff --git a/samples/bpf/tracex3_kern.c b/samples/bpf/tracex3_kern.c
index 710a4410b2fb..bde6591cb20c 100644
--- a/samples/bpf/tracex3_kern.c
+++ b/samples/bpf/tracex3_kern.c
@@ -49,7 +49,7 @@ struct {
__uint(max_entries, SLOTS);
} lat_map SEC(".maps");

-SEC("kprobe/blk_account_io_done")
+SEC("kprobe/__blk_account_io_done")
int bpf_prog2(struct pt_regs *ctx)
{
long rq = PT_REGS_PARM1(ctx);
--
2.35.1


2022-03-07 06:39:50

by Yonghong Song

[permalink] [raw]
Subject: Re: [PATCH bpf-next] samples/bpf: fix broken bpf programs due to function inlining



On 3/6/22 4:15 AM, Muhammad Falak R Wani wrote:
> commit: "be6bfe36db17 block: inline hot paths of blk_account_io_*()"
> inlines the function `blk_account_io_done`. As a result we can't attach a
> kprobe to the function anymore. Use `__blk_account_io_done` instead.
>
> Signed-off-by: Muhammad Falak R Wani <[email protected]>

Acked-by: Yonghong Song <[email protected]>

2022-03-08 11:07:27

by Muhammad Falak R Wani

[permalink] [raw]
Subject: Re: [PATCH bpf-next] samples/bpf: fix broken bpf programs due to function inlining

On Mon, Mar 07, 2022 at 10:11:36PM -0800, Andrii Nakryiko wrote:
> On Sun, Mar 6, 2022 at 4:15 AM Muhammad Falak R Wani
> <[email protected]> wrote:
> >
> > commit: "be6bfe36db17 block: inline hot paths of blk_account_io_*()"
> > inlines the function `blk_account_io_done`. As a result we can't attach a
> > kprobe to the function anymore. Use `__blk_account_io_done` instead.
> >
> > Signed-off-by: Muhammad Falak R Wani <[email protected]>
> > ---
> > samples/bpf/task_fd_query_kern.c | 2 +-
> > samples/bpf/tracex3_kern.c | 2 +-
> > 2 files changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/samples/bpf/task_fd_query_kern.c b/samples/bpf/task_fd_query_kern.c
> > index c821294e1774..186ac0a79c0a 100644
> > --- a/samples/bpf/task_fd_query_kern.c
> > +++ b/samples/bpf/task_fd_query_kern.c
>
> samples/bpf/task_fd_query_user.c also needs adjusting, no? Have you
> tried running those samples?
Aplologies, I ran the `tracex3` program, but missed to verify `task_fd_query`. Should I send a V2
where I modify only the `tracex3` ?

2022-03-08 17:58:21

by Andrii Nakryiko

[permalink] [raw]
Subject: Re: [PATCH bpf-next] samples/bpf: fix broken bpf programs due to function inlining

On Sun, Mar 6, 2022 at 4:15 AM Muhammad Falak R Wani
<[email protected]> wrote:
>
> commit: "be6bfe36db17 block: inline hot paths of blk_account_io_*()"
> inlines the function `blk_account_io_done`. As a result we can't attach a
> kprobe to the function anymore. Use `__blk_account_io_done` instead.
>
> Signed-off-by: Muhammad Falak R Wani <[email protected]>
> ---
> samples/bpf/task_fd_query_kern.c | 2 +-
> samples/bpf/tracex3_kern.c | 2 +-
> 2 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/samples/bpf/task_fd_query_kern.c b/samples/bpf/task_fd_query_kern.c
> index c821294e1774..186ac0a79c0a 100644
> --- a/samples/bpf/task_fd_query_kern.c
> +++ b/samples/bpf/task_fd_query_kern.c

samples/bpf/task_fd_query_user.c also needs adjusting, no? Have you
tried running those samples?


> @@ -10,7 +10,7 @@ int bpf_prog1(struct pt_regs *ctx)
> return 0;
> }
>
> -SEC("kretprobe/blk_account_io_done")
> +SEC("kretprobe/__blk_account_io_done")
> int bpf_prog2(struct pt_regs *ctx)
> {
> return 0;
> diff --git a/samples/bpf/tracex3_kern.c b/samples/bpf/tracex3_kern.c
> index 710a4410b2fb..bde6591cb20c 100644
> --- a/samples/bpf/tracex3_kern.c
> +++ b/samples/bpf/tracex3_kern.c
> @@ -49,7 +49,7 @@ struct {
> __uint(max_entries, SLOTS);
> } lat_map SEC(".maps");
>
> -SEC("kprobe/blk_account_io_done")
> +SEC("kprobe/__blk_account_io_done")
> int bpf_prog2(struct pt_regs *ctx)
> {
> long rq = PT_REGS_PARM1(ctx);
> --
> 2.35.1
>

2022-03-08 18:00:48

by Andrii Nakryiko

[permalink] [raw]
Subject: Re: [PATCH bpf-next] samples/bpf: fix broken bpf programs due to function inlining

On Tue, Mar 8, 2022 at 2:43 AM Muhammad Falak R Wani
<[email protected]> wrote:
>
> On Mon, Mar 07, 2022 at 10:11:36PM -0800, Andrii Nakryiko wrote:
> > On Sun, Mar 6, 2022 at 4:15 AM Muhammad Falak R Wani
> > <[email protected]> wrote:
> > >
> > > commit: "be6bfe36db17 block: inline hot paths of blk_account_io_*()"
> > > inlines the function `blk_account_io_done`. As a result we can't attach a
> > > kprobe to the function anymore. Use `__blk_account_io_done` instead.
> > >
> > > Signed-off-by: Muhammad Falak R Wani <[email protected]>
> > > ---
> > > samples/bpf/task_fd_query_kern.c | 2 +-
> > > samples/bpf/tracex3_kern.c | 2 +-
> > > 2 files changed, 2 insertions(+), 2 deletions(-)
> > >
> > > diff --git a/samples/bpf/task_fd_query_kern.c b/samples/bpf/task_fd_query_kern.c
> > > index c821294e1774..186ac0a79c0a 100644
> > > --- a/samples/bpf/task_fd_query_kern.c
> > > +++ b/samples/bpf/task_fd_query_kern.c
> >
> > samples/bpf/task_fd_query_user.c also needs adjusting, no? Have you
> > tried running those samples?
> Aplologies, I ran the `tracex3` program, but missed to verify `task_fd_query`. Should I send a V2
> where I modify only the `tracex3` ?

No, send a patch fixing everything in one patch