Not logged in
Log in now
Create an account
Subscribe to LWN
Pencil, Pencil, and Pencil
Dividing the Linux desktop
LWN.net Weekly Edition for June 13, 2013
A report from pgCon 2013
Little things that matter in language design
And yes, they actually use it from their MODULE_LICENSE("CDDL"); module.
Oracle offering DTrace for Linux
Posted Feb 23, 2012 12:40 UTC (Thu) by rich0 (guest, #55509)
Posted Feb 23, 2012 13:18 UTC (Thu) by nevets (subscriber, #11875)
Is a clear attempt to circumvent the GPL. I don't know the CDDL license but just posting their modified source is not enough to satisfy the GPL license. You must also allow those that you distribute the code to, the same rights that you have with the code. Free to modify themselves, and they too must follow the rules as well.
Needing the print_context_stack makes their module a derived work. Not something that was ported straight from Sun OS.
Posted Feb 23, 2012 17:17 UTC (Thu) by mjg59 (subscriber, #23239)
Posted Feb 23, 2012 17:38 UTC (Thu) by nevets (subscriber, #11875)
Posted Feb 23, 2012 17:52 UTC (Thu) by kvh (guest, #83085)
As soon as we realized that in later kernels print_context_stack was exported as GPL-only rather than the non-GPL-only we had chosen, we changed our code to match that, and we moved the part of the DTrace code that uses it GPL as well. This is evidenced in the source code drop for 0.2 that will be placed on oss.oracle.com very soon.
Posted Feb 24, 2012 2:47 UTC (Fri) by clump (subscriber, #27801)
Posted Feb 24, 2012 3:29 UTC (Fri) by nevets (subscriber, #11875)
Posted Feb 24, 2012 19:56 UTC (Fri) by clump (subscriber, #27801)
Posted Feb 24, 2012 7:03 UTC (Fri) by lkundrak (subscriber, #43452)
Sorry for not using the version that will be released "very soon" :) Thanks for the oss.oracle.com pointer though; I've been comparing the SRPMs. Seems like I did compare 2.6.32-201.0.1.el5uek to Red Hat's 2.6.32, where they seem to have backported the print_context_stack() independently. Certainly my fault, let me apologize.
Having recompared against 2.6.32-200.19.1.el6uek, on top of which was it based according to the change log, the following seems to have been exported:
Now -- I don't get this; using symbols that are GPL-only from a non-GPL module is wrong, while using ones that have not been exported at all is fine?
Posted Feb 23, 2012 17:07 UTC (Thu) by robert_s (subscriber, #42402)
Marking symbols non-GPL is effectively the kernel developers saying "we don't consider this symbol as an internal core function of the kernel" and as such a module using just those symbols would not be considered a derived work. i.e. "we won't sue over use of these symbols"
Posted Feb 23, 2012 17:15 UTC (Thu) by khim (subscriber, #9252)
Actually it's the other way around: if symbol is declared EXPORT_SYMBOL_GPL then it means that linux developers believe it's impossible to use it without making module derived work of Linux kernel because it's hook to such an intimate part of it.
It's still perfectly possible to create module which is derived work of Linux kernel and which only uses EXPORT_SYMBOL hooks.
Posted Feb 23, 2012 17:11 UTC (Thu) by lambda (subscriber, #40735)
Oracle is not the copyright holder on the kernel; they hold copyright on some parts, but not others. Each developer or company holds the copyrights to the portions which they contributed.
The GPL does not allow someone downstream to link and distribute modules to the GPLed software unless that code is also available under the GPL. However, as an exception, kernel developers have granted the ability for non-GPLed kernel modules to link against the kernel, as long as they only use certain symbols that are exported via EXPORT_SYMBOL instead of EXPORT_SYMBOL_GPL. Anyone can apply the GPL to their own work, and then grant additional freedoms beyond what the GPL grants, and that is what the kernel developers (and copyright holders) have done whenever they apply EXPORT_SYMBOL to an interface.
However, someone else cannot come along, and grant themselves additional freedoms. I can't take a piece of GPLed software, and add a few declarations saying "this interface is OK for non GPLed software to link against," and then add my own proprietary code to the software and distribute it. I do not own the copyright, so I cannot grant myself the additional freedom to do this.
That is what Oracle seems to be doing here; they seem to be trying to grant themselves additional freedom beyond what the GPL license of the kernel grants. And I can imagine that some kernel developers might wind up being fairly unhappy about that.
Posted Feb 23, 2012 17:32 UTC (Thu) by khim (subscriber, #9252)
However, as an exception, kernel developers have granted the ability for non-GPLed kernel modules to link against the kernel, as long as they only use certain symbols that are exported via EXPORT_SYMBOL instead of EXPORT_SYMBOL_GPL.
Citation needed™. And it's needed really badly because historicaly Linux developers had the opposite POV. It's hard to interpret the infamous Linus's
If an author claims your work is derivative, you should
step very very lightly.
And I claim that binary-only kernel modules ARE derivative "by default",
by virtue of having no meaning without the kernel.
except as "if you lawyer believes your work is not derivative and if you are ready defend this POV in court, then maybe, just maybe your work is indeed not a derivative and thus can be non-GPL licensed".
However, someone else cannot come along, and grant themselves additional freedoms.
Yes, they can. This is just a marker. But yes, what Oracle did is a clarion call: they took symbol which was marked with "no way in hell can you use it without creating derived work" symbol and removed this mark. Their lawyers should be prepared to defend removal of said mark quite seriously.
And I can imagine that some kernel developers might wind up being fairly unhappy about that.
Not necessarily. If it can be shown that DTrace indeed uses this hook in way which does not imply intimate knowledge of kernel internals then this will be strong signal that this symbol was marked as EXPORT_SYMBOL_GPL by mistake.
Posted Feb 23, 2012 19:28 UTC (Thu) by lambda (subscriber, #40735)
Sorry, you are right. I got the sense backwards in terms of which one is more explicit. EXPORT_SYMBOL is not explicit about what it is declaring; using it, you may or may not be creating a derived work. EXPORT_SYMBOL_GPL is a way of documenting "if you use this interface, you are clearly mucking about in the internals of the kernel and thus are clearly creating a derived work." The only explicit disclaimer is that any interface exported to user space is disclaimed from creating a derived work for purposes of the GPL.
That doesn't really change my point about the intent of changing an interface from EXPORT_SYMBOL to EXPORT_SYMBOL_GPL; that change says "I know that the kernel developers have said that what I'm doing will create a derived work, but I am going to do that anyhow, and I am not releasing my module under the GPL." That does not automatically mean that what they are doing is a copyright violation; but it shows that they are aware that there are kernel developers who believe that use of that interface constitutes creating a derived work, and they are proceeding anyhow.
Posted Feb 24, 2012 0:51 UTC (Fri) by mathstuf (subscriber, #69389)
Posted Feb 24, 2012 13:49 UTC (Fri) by vonbrand (subscriber, #4458)
AFAIU, there are three cases here:
Posted Feb 24, 2012 21:14 UTC (Fri) by mathstuf (subscriber, #69389)
Copyright © 2013, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds