diff mbox series

bpf: Use tracing helpers for lsm programs

Message ID 20200531154255.896551-1-jolsa@kernel.org
State Accepted
Delegated to: BPF Maintainers
Headers show
Series bpf: Use tracing helpers for lsm programs | expand

Commit Message

Jiri Olsa May 31, 2020, 3:42 p.m. UTC
Currenty lsm uses bpf_tracing_func_proto helpers which do
not include stack trace or perf event output. It's useful
to have those for bpftrace lsm support [1].

Using tracing_prog_func_proto helpers for lsm programs.

[1] https://github.com/iovisor/bpftrace/pull/1347

Cc: KP Singh <kpsingh@google.com>
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
---
 include/linux/bpf.h      | 3 +++
 kernel/bpf/bpf_lsm.c     | 2 +-
 kernel/trace/bpf_trace.c | 2 +-
 3 files changed, 5 insertions(+), 2 deletions(-)

Comments

Song Liu June 1, 2020, 7 p.m. UTC | #1
On Sun, May 31, 2020 at 8:45 AM Jiri Olsa <jolsa@kernel.org> wrote:
>
> Currenty lsm uses bpf_tracing_func_proto helpers which do
> not include stack trace or perf event output. It's useful
> to have those for bpftrace lsm support [1].
>
> Using tracing_prog_func_proto helpers for lsm programs.

How about using raw_tp_prog_func_proto?

Thanks,
Song

PS: Please tag the patch with subject prefix "PATCH bpf" for
"PATCH bpf-next". I think this one belongs to bpf-next, which means
we should wait after the merge window.
Alexei Starovoitov June 1, 2020, 10:12 p.m. UTC | #2
On Mon, Jun 1, 2020 at 12:00 PM Song Liu <song@kernel.org> wrote:
>
> On Sun, May 31, 2020 at 8:45 AM Jiri Olsa <jolsa@kernel.org> wrote:
> >
> > Currenty lsm uses bpf_tracing_func_proto helpers which do
> > not include stack trace or perf event output. It's useful
> > to have those for bpftrace lsm support [1].
> >
> > Using tracing_prog_func_proto helpers for lsm programs.
>
> How about using raw_tp_prog_func_proto?

why?
I think skb/xdp_output is useful for lsm progs too.
So I've applied the patch.

> PS: Please tag the patch with subject prefix "PATCH bpf" for
> "PATCH bpf-next". I think this one belongs to bpf-next, which means
> we should wait after the merge window.

+1.
Jiri,
pls tag the subject properly.
Song Liu June 1, 2020, 10:52 p.m. UTC | #3
On Mon, Jun 1, 2020 at 3:12 PM Alexei Starovoitov
<alexei.starovoitov@gmail.com> wrote:
>
> On Mon, Jun 1, 2020 at 12:00 PM Song Liu <song@kernel.org> wrote:
> >
> > On Sun, May 31, 2020 at 8:45 AM Jiri Olsa <jolsa@kernel.org> wrote:
> > >
> > > Currenty lsm uses bpf_tracing_func_proto helpers which do
> > > not include stack trace or perf event output. It's useful
> > > to have those for bpftrace lsm support [1].
> > >
> > > Using tracing_prog_func_proto helpers for lsm programs.
> >
> > How about using raw_tp_prog_func_proto?
>
> why?
> I think skb/xdp_output is useful for lsm progs too.
> So I've applied the patch.

The only reason I asked was that the commit log only said stack trace and
perf event output. No objections allowing other helpers for lsm.

Thanks,
Song
Jiri Olsa June 2, 2020, 8:13 a.m. UTC | #4
On Mon, Jun 01, 2020 at 03:12:13PM -0700, Alexei Starovoitov wrote:
> On Mon, Jun 1, 2020 at 12:00 PM Song Liu <song@kernel.org> wrote:
> >
> > On Sun, May 31, 2020 at 8:45 AM Jiri Olsa <jolsa@kernel.org> wrote:
> > >
> > > Currenty lsm uses bpf_tracing_func_proto helpers which do
> > > not include stack trace or perf event output. It's useful
> > > to have those for bpftrace lsm support [1].
> > >
> > > Using tracing_prog_func_proto helpers for lsm programs.
> >
> > How about using raw_tp_prog_func_proto?
> 
> why?
> I think skb/xdp_output is useful for lsm progs too.
> So I've applied the patch.

right, it's also where d_path will be as well

> 
> > PS: Please tag the patch with subject prefix "PATCH bpf" for
> > "PATCH bpf-next". I think this one belongs to bpf-next, which means
> > we should wait after the merge window.

I must have missed info about that,
thanks for info

> 
> +1.
> Jiri,
> pls tag the subject properly.

will do, sry

thanks,
jirka
KP Singh June 2, 2020, 9:06 a.m. UTC | #5
On Tue, Jun 2, 2020 at 10:13 AM Jiri Olsa <jolsa@redhat.com> wrote:
>
> On Mon, Jun 01, 2020 at 03:12:13PM -0700, Alexei Starovoitov wrote:
> > On Mon, Jun 1, 2020 at 12:00 PM Song Liu <song@kernel.org> wrote:
> > >
> > > On Sun, May 31, 2020 at 8:45 AM Jiri Olsa <jolsa@kernel.org> wrote:
> > > >
> > > > Currenty lsm uses bpf_tracing_func_proto helpers which do
> > > > not include stack trace or perf event output. It's useful
> > > > to have those for bpftrace lsm support [1].
> > > >
> > > > Using tracing_prog_func_proto helpers for lsm programs.
> > >
> > > How about using raw_tp_prog_func_proto?
> >
> > why?
> > I think skb/xdp_output is useful for lsm progs too.
> > So I've applied the patch.
>
> right, it's also where d_path will be as well
>
> >
> > > PS: Please tag the patch with subject prefix "PATCH bpf" for
> > > "PATCH bpf-next". I think this one belongs to bpf-next, which means
> > > we should wait after the merge window.
>
> I must have missed info about that,
> thanks for info

Thanks for adding this! LGTM as well.

- KP

>
> >
> > +1.
> > Jiri,
> > pls tag the subject properly.
>
> will do, sry
>
> thanks,
> jirka
>
diff mbox series

Patch

diff --git a/include/linux/bpf.h b/include/linux/bpf.h
index e5884f7f801c..caa26ab471e8 100644
--- a/include/linux/bpf.h
+++ b/include/linux/bpf.h
@@ -1628,6 +1628,9 @@  extern const struct bpf_func_proto bpf_ringbuf_query_proto;
 const struct bpf_func_proto *bpf_tracing_func_proto(
 	enum bpf_func_id func_id, const struct bpf_prog *prog);
 
+const struct bpf_func_proto *tracing_prog_func_proto(
+  enum bpf_func_id func_id, const struct bpf_prog *prog);
+
 /* Shared helpers among cBPF and eBPF. */
 void bpf_user_rnd_init_once(void);
 u64 bpf_user_rnd_u32(u64 r1, u64 r2, u64 r3, u64 r4, u64 r5);
diff --git a/kernel/bpf/bpf_lsm.c b/kernel/bpf/bpf_lsm.c
index 19636703b24e..fb278144e9fd 100644
--- a/kernel/bpf/bpf_lsm.c
+++ b/kernel/bpf/bpf_lsm.c
@@ -49,6 +49,6 @@  const struct bpf_prog_ops lsm_prog_ops = {
 };
 
 const struct bpf_verifier_ops lsm_verifier_ops = {
-	.get_func_proto = bpf_tracing_func_proto,
+	.get_func_proto = tracing_prog_func_proto,
 	.is_valid_access = btf_ctx_access,
 };
diff --git a/kernel/trace/bpf_trace.c b/kernel/trace/bpf_trace.c
index 3767d34114c0..794d665bebdd 100644
--- a/kernel/trace/bpf_trace.c
+++ b/kernel/trace/bpf_trace.c
@@ -1467,7 +1467,7 @@  raw_tp_prog_func_proto(enum bpf_func_id func_id, const struct bpf_prog *prog)
 	}
 }
 
-static const struct bpf_func_proto *
+const struct bpf_func_proto *
 tracing_prog_func_proto(enum bpf_func_id func_id, const struct bpf_prog *prog)
 {
 	switch (func_id) {