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

Muhammad Falak R Wani posted 1 patch 4 years, 3 months ago
samples/bpf/task_fd_query_kern.c | 2 +-
samples/bpf/tracex3_kern.c       | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
[PATCH bpf-next] samples/bpf: fix broken bpf programs due to function inlining
Posted by Muhammad Falak R Wani 4 years, 3 months ago
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 <falakreyaz@gmail.com>
---
 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
Re: [PATCH bpf-next] samples/bpf: fix broken bpf programs due to function inlining
Posted by Yonghong Song 4 years, 3 months ago

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 <falakreyaz@gmail.com>

Acked-by: Yonghong Song <yhs@fb.com>
Re: [PATCH bpf-next] samples/bpf: fix broken bpf programs due to function inlining
Posted by Andrii Nakryiko 4 years, 3 months ago
On Sun, Mar 6, 2022 at 4:15 AM Muhammad Falak R Wani
<falakreyaz@gmail.com> 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 <falakreyaz@gmail.com>
> ---
>  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
>
Re: [PATCH bpf-next] samples/bpf: fix broken bpf programs due to function inlining
Posted by Muhammad Falak R Wani 4 years, 3 months ago
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
> <falakreyaz@gmail.com> 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 <falakreyaz@gmail.com>
> > ---
> >  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` ?
Re: [PATCH bpf-next] samples/bpf: fix broken bpf programs due to function inlining
Posted by Andrii Nakryiko 4 years, 3 months ago
On Tue, Mar 8, 2022 at 2:43 AM Muhammad Falak R Wani
<falakreyaz@gmail.com> 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
> > <falakreyaz@gmail.com> 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 <falakreyaz@gmail.com>
> > > ---
> > >  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