Rick Moen’s LinuxMafia.com knowledgebase has some great information. I ran across a series of postings the other day that clarified the problem with loadable Linux kernel modules at the GPL.
As usual, the dividing line between legal and illegal (or permitted and infringing) rests on the legal definition of a derivative work. The usual “is it linking?” question brought up by the GPL is sort of misleading here. As well, Linus’ policy during the early years of the kernel can be a little confusing.
The basic point is this: a binary blob compiled against and distributed for a particular version of the Linux kernel is a derivative work of that kernel. Even further, it doesn’t matter if you do distribute the source code for a thin shim that links against the kernel as well as a binary blob. You’re not fooling anyone.
That doesn’t make your source code a derivative work, however. It’s the act of compilation that makes your binary blob a derivative work. As soon as it’s clear that you’re distributing a binary blob that, by your intent, uses anything in the kernel apart from the standard userland system call boundary, you’ve distributed a derivatve work and the GPL terms apply.
Again, your source code is not a derivative work, unless you reuse copylefted code in it, but your binary blob is.
I look forward to a Linux kernel copyright holder contacting a blob vendor with this argument. Companies that desire so strongly to “protect [their] valuable intellectual property” might consider respecting the copyright of everyrone who has contributed to the kernel; their argument wears thin by their hypocrisy.