On the value of EXPORT_SYMBOL_GPL
Posted Oct 6, 2005 8:00 UTC (Thu) by mingo
Parent article: On the value of EXPORT_SYMBOL_GPL
i'd like to extend/correct this simplified assertion in the article:
"Exports come in two flavors: vanilla (EXPORT_SYMBOL) and GPL-only (EXPORT_SYMBOL_GPL). The former are available to any kernel module, while the latter cannot be used by any modules which do not carry a GPL-compatible license."
symbols exported via EXPORT_SYMBOL are "available to any kernel module" only technically, but what license covers the module depends on the type of symbol that the module uses.
If the module is clearly separate work (legally), then it can be non-GPL. If a module uses internal symbols of the kernel, even if those symbols are exported via EXPORT_SYMBOL, it could still very much be a derived work of the kernel, and thus its distribution is covered by the GPL. So the advice is: if your module is non-GPL-compatible, "talk to your lawyer".
in other words: EXPORT_SYMBOL is not a blanket permission by kernel developers to limit the scope of the GPL covering derived work kernel modules.
If your module is GPL, then it is fine to distribute it as allowed by the GPL, independently of whether the module is a derived work of the kernel or not.
If your module is non-GPL then obviously it very much matters whether it is a derived work of the GPL-ed Linux kernel! The scope and type of kernel-internal symbols used by a module is a large factor in deciding whether the module is a derived work of the Linux kernel. Using an EXPORT_SYMBOL_GPL symbol is a clear indicator that the module is using something that kernel developers consider deeply internal.
Linux kernel copyright owners have also added an effective technological protection measure to ensure that the kernel's copyrighted code covered by EXPORT_SYMBOL_GPL can only be used by modules that explicitly declare themselves GPL-compatible.
EXPORT_SYMBOL symbols do not mean the opposite of EXPORT_SYMBOL_GPL - they are simply "undefined" - you have to find out for yourself.
(this might sound like nitpicking, but the devil is in the details, and these are important details. IAALKD, IANAL.)
to post comments)