Stirrings in the Kernel Module Debate

There has been recent public comment from Alan Cox regarding whether proprietary Linux kernel modules are allowed under GPL.  Cox is a significant kernel contributor, and the commentary appears to be aimed at preventing estoppel arguments or supporting claims for willful copyright infringement (which could result in enhanced damages).  Binary modules of some types have long co-existed with the GPL kernel, but what is allowed and what is not has long been a subject of controversy — even mystery — in GPL interpretation.  Public comment on the topic has historically been rare.   

Alan Cox comments, “I’m a rights holder…. The code I provided is licensed under the GPL. Whether the symbol is EXPORT_SYMBOL or EXPORT_SYMBOL_GPL any derivative code (eg code that requires the kernel be modified to match it) cannot call it.

I’m recommended by my lawyer to always remind people of this when such a claim is made. It ensures that triple damages for wilful infringement will apply unless the other party can show it reviewed the situation carefully and its appropriately qualified legal staff reached a different conclusion.”

Also, “The GPL covers *all* derivative works. EXPORT_SYMBOL doesn’t magically make code non-derivative. If you need to modify the kernel to make your driver work *and* you want to claim it is not derivative then I hope there are good lawyers involved 😎 The kernel is GPL, all derived works of a GPL codebase are required to be GPL. There is no magic rule about modules. I’ve stated that repeatedly for anything containing a line of code I own. GregKH [Greg Kroah-Hartman] has made it very clear for his code, and so it goes on.”

Cox and Kroah-Hartman are both listed on the Linux Foundation’s list of top individual contributors in its March, 2012 paper on Linux development.

Many kernel-adjacent developers have looked to EXPORT SYMBOLs to understand the intent of kernel developers as to what interfaces can support proprietary modules. 

previous public comment by Cox said:

“Since you’ve asked this I’m advised by my lawyer to respond to all such assumptions of legality of binary modules…For a Linux kernel containing any code I own the code is under the GNU public license v2 (in some cases or later), I have never given permission for that code to be used as part of a combined or derivative work which contains binary chunks. I have never said that modules are somehow magically outside the GPL and I am doubtful that in most cases a work containing binary modules for a Linux kernel is compatible with the licensing, although I accept there may be some cases that it is.”
This discussion string referred to whether “shims” can be used to cause proprietary modules to interface with EXPORT_SYMBOL_GPLed code.