Message ID | 1445637499-11146-1-git-send-email-ast@kernel.org |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
* Alexei Starovoitov <ast@plumgrid.com> wrote: > exported perf symbols are GPL only, mark eBPF helper functions > used in tracing as GPL only as well. > > Suggested-by: Peter Zijlstra <a.p.zijlstra@chello.nl> > Signed-off-by: Alexei Starovoitov <ast@kernel.org> > --- > this is on top of this patch that touches the same file: > http://patchwork.ozlabs.org/patch/534664/ > > kernel/trace/bpf_trace.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/kernel/trace/bpf_trace.c b/kernel/trace/bpf_trace.c > index 003df3887287..4228fd3682c3 100644 > --- a/kernel/trace/bpf_trace.c > +++ b/kernel/trace/bpf_trace.c > @@ -214,7 +214,7 @@ static u64 bpf_perf_event_read(u64 r1, u64 index, u64 r3, u64 r4, u64 r5) > > static const struct bpf_func_proto bpf_perf_event_read_proto = { > .func = bpf_perf_event_read, > - .gpl_only = false, > + .gpl_only = true, > .ret_type = RET_INTEGER, > .arg1_type = ARG_CONST_MAP_PTR, > .arg2_type = ARG_ANYTHING, > @@ -255,7 +255,7 @@ static u64 bpf_perf_event_output(u64 r1, u64 r2, u64 index, u64 r4, u64 size) > > static const struct bpf_func_proto bpf_perf_event_output_proto = { > .func = bpf_perf_event_output, > - .gpl_only = false, > + .gpl_only = true, > .ret_type = RET_INTEGER, > .arg1_type = ARG_PTR_TO_CTX, > .arg2_type = ARG_CONST_MAP_PTR, So there's a lot more 'gpl_only = false' cases that I can see: triton:~/tip> git grep gpl_only | grep false kernel/bpf/core.c: .gpl_only = false, kernel/bpf/helpers.c: .gpl_only = false, kernel/bpf/helpers.c: .gpl_only = false, kernel/bpf/helpers.c: .gpl_only = false, kernel/bpf/helpers.c: .gpl_only = false, kernel/bpf/helpers.c: .gpl_only = false, kernel/bpf/helpers.c: .gpl_only = false, kernel/bpf/helpers.c: .gpl_only = false, kernel/bpf/helpers.c: .gpl_only = false, kernel/trace/bpf_trace.c: .gpl_only = false, net/core/filter.c: .gpl_only = false, net/core/filter.c: .gpl_only = false, net/core/filter.c: .gpl_only = false, net/core/filter.c: .gpl_only = false, net/core/filter.c: .gpl_only = false, net/core/filter.c: .gpl_only = false, net/core/filter.c: .gpl_only = false, net/core/filter.c: .gpl_only = false, net/core/filter.c: .gpl_only = false, and only a handful of 'true' cases: triton:~/tip> git grep gpl_only | grep true kernel/bpf/helpers.c: .gpl_only = true, kernel/trace/bpf_trace.c: .gpl_only = true, kernel/trace/bpf_trace.c: .gpl_only = true, so I don't know the netfilter ones, but in particular the tracing ones I'm sure should be gpl-only. Do we really, really want proprietary modules mucking with such internals?? Thanks, Ingo -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 10/25/15 2:14 AM, Ingo Molnar wrote: > so I don't know the netfilter ones, but in particular the tracing ones I'm sure > should be gpl-only. Do we really, really want proprietary modules mucking with > such internals?? of course, not. Therefore bpf_probe_read() was gpl_only from very beginning. Same goes to bpf_trace_printk() and bpf_ktime_get_ns(). and after this patch the only remaining non-gpl tracing helpers will be bpf_get_current_pid_tgid()/uid_gid()/comm() and imo it's fine. On the networking side the helpers are non-gpl, since all of them are generic. They don't mess with kernel, but examine/modify the packet. Just like cBPF can read the packet data, get_processor_id, get_random, eBPF can do the same plus write into the packet, compute checksum, redirect, push/pop vlan. When we introduce eBPF for seccomp, I would argue that helpers on that side should be non-gpl as well, otherwise people will try to add features to cBPF instead of moving to eBPF. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
From: Alexei Starovoitov <ast@plumgrid.com> Date: Fri, 23 Oct 2015 14:58:19 -0700 > exported perf symbols are GPL only, mark eBPF helper functions > used in tracing as GPL only as well. > > Suggested-by: Peter Zijlstra <a.p.zijlstra@chello.nl> > Signed-off-by: Alexei Starovoitov <ast@kernel.org> Applied. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/kernel/trace/bpf_trace.c b/kernel/trace/bpf_trace.c index 003df3887287..4228fd3682c3 100644 --- a/kernel/trace/bpf_trace.c +++ b/kernel/trace/bpf_trace.c @@ -214,7 +214,7 @@ static u64 bpf_perf_event_read(u64 r1, u64 index, u64 r3, u64 r4, u64 r5) static const struct bpf_func_proto bpf_perf_event_read_proto = { .func = bpf_perf_event_read, - .gpl_only = false, + .gpl_only = true, .ret_type = RET_INTEGER, .arg1_type = ARG_CONST_MAP_PTR, .arg2_type = ARG_ANYTHING, @@ -255,7 +255,7 @@ static u64 bpf_perf_event_output(u64 r1, u64 r2, u64 index, u64 r4, u64 size) static const struct bpf_func_proto bpf_perf_event_output_proto = { .func = bpf_perf_event_output, - .gpl_only = false, + .gpl_only = true, .ret_type = RET_INTEGER, .arg1_type = ARG_PTR_TO_CTX, .arg2_type = ARG_CONST_MAP_PTR,
exported perf symbols are GPL only, mark eBPF helper functions used in tracing as GPL only as well. Suggested-by: Peter Zijlstra <a.p.zijlstra@chello.nl> Signed-off-by: Alexei Starovoitov <ast@kernel.org> --- this is on top of this patch that touches the same file: http://patchwork.ozlabs.org/patch/534664/ kernel/trace/bpf_trace.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)