RE: Re: Re: Clarification on bpftool dual licensing

2 messages, 2 authors, 2021-11-19 · open the first message on its own page

RE: Re: Re: Clarification on bpftool dual licensing

From: Martin Kelly <hidden>
Date: 2021-11-18 16:38:16

On Wed, Nov 17, 2021 at 4:32 PM Martin Kelly
[off-list ref] wrote:
quoted
quoted
On Tue, Nov 16, 2021 at 2:16 AM Daniel Borkmann
[off-list ref]
quoted
quoted
wrote:
quoted
On 11/15/21 7:20 PM, Martin Kelly wrote:
quoted
Hi,

I have a question regarding the dual licensing provision of bpftool. I
understand that bpftool can be distributed as either GPL 2.0 or BSD 2-
clause.
quoted
quoted
That said, bpftool can also auto-generate BPF code that gets specified
inline
quoted
quoted
quoted
quoted
in the skeleton header file, and it's possible that the BPF code generated
is
quoted
quoted
quoted
quoted
GPL. What I'm wondering is what happens if bpftool generates GPL-
licensed
quoted
quoted
BPF
quoted
quoted
code inside the skeleton header, so that you get a header like this:

something.skel.h:
/* this file is BSD 2-clause, by nature of dual licensing */
Fwiw, the generated header contains an SPDX identifier:

  /* SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) */
  /* THIS FILE IS AUTOGENERATED! */
quoted
/* THIS FILE IS AUTOGENERATED! */

/* standard skeleton definitions */

...

s->data_sz = XXX;
s->data = (void *)"\
<eBPF bytecode, produced by GPL 2.0 sources, specified in binary>
";

My guess is that, based on the choice to dual-license bpftool, the header
is
quoted
quoted
quoted
quoted
meant to still be BSD 2-clause, and the s->data inline code's GPL license
is
quoted
quoted
quoted
quoted
not meant to change the licensing of the header itself, but I wanted to
Yes, definitely that is the intent (but not a lawyer either).
 Thanks everyone, that's what I assumed as well. Any objection to a patch
clarifying this more explicitly?
quoted
One other, related question: vmlinux.h (generated by "bpftool btf dump file
/sys/kernel/btf/vmlinux format c"), does not currently contain a license
declaration. I assume this would have to be a GPL header, since vmlinux.h
references many GPL'd Linux kernel structs and similar, though again I'm not a
lawyer and therefore am not certain. Would you all agree with this? If so, any
objection to a patch adding an SPDX line to the generated vmlinux.h?

Is vmlinux DWARF data GPL'ed? I certainly hope not. So vmlinux.h
shouldn't be licensed under GPL.
I have no idea; I had assumed that a struct definition coming from a GPL-licensed header would have to be GPL, but again, not a lawyer, and I could totally be wrong. If not GPL though, what would the license be? Is it just "output of a program" and therefore license-less, even though the output happens to be code?

RE: Re: Re: Clarification on bpftool dual licensing

From: Toke Høiland-Jørgensen <hidden>
Date: 2021-11-19 12:54:25

Martin Kelly [off-list ref] writes:
quoted
quoted
One other, related question: vmlinux.h (generated by "bpftool btf dump file
/sys/kernel/btf/vmlinux format c"), does not currently contain a license
declaration. I assume this would have to be a GPL header, since vmlinux.h
references many GPL'd Linux kernel structs and similar, though again I'm not a
lawyer and therefore am not certain. Would you all agree with this? If so, any
objection to a patch adding an SPDX line to the generated vmlinux.h?

Is vmlinux DWARF data GPL'ed? I certainly hope not. So vmlinux.h
shouldn't be licensed under GPL.
I have no idea; I had assumed that a struct definition coming from a
GPL-licensed header would have to be GPL, but again, not a lawyer, and
I could totally be wrong. If not GPL though, what would the license
be? Is it just "output of a program" and therefore license-less, even
though the output happens to be code?
Totally not a lawyer either, but:

There's (generally, in many jurisdictions, etc), a minimum bar for when
something is considered a "creative work" and thus copyrightable. Debug
output *could* fall short of this (and thus not be copyrightable at
all). It could also fall under the same "API" umbrella as that famous
Google v Oracle case. Or it could fall under the "syscall exception" of
the kernel source.

I guess it would take a court decision to know either way. IMO it would
make sense if vmlinux.h is not copyrightable for whatever reason, but,
again, IANAL :)

Anyway, while we obviously can't resolve legal matters on the mailing,
we can express the *intention* of the community, which is what the
licensing document is trying to do. So it totally makes sense to mention
vmlinux.h here; the question is what should such a text say?

-Toke
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help