April 28, 2004

Tainted love: proprietary drivers and the Linux kernel

Author: Joe Barr

As reported on Slashdot and elsewhere, Linux kernel hackers have discovered that some proprietary modules running on the Linux kernel have been "lying" about their licensing. Doing so allows those modules to pass the automated license test done when they are loaded and thus escape the "tainted kernel" messages the loader would otherwise produce. NewsForge has gone behind the scenes and spoken to Linus Torvalds and the CEO of one of the firms providing proprietary modules for Linux to learn more about this story.

We queried Marc Boucher, president of Linuxant, Inc., by email yesterday, asking if it were true that their proprietary Linux drivers were "lying" to the load module by including an "end of string" sequence after the word "GPL" in the binary code. Marc told us "The \0 is a technical workaround to prevent a slew of redundant and confusing messages appearing on the console when our modem driver modules are loaded." Marc also pointed us to an email he had posted to the Linux Kernel Mailing List, in which he explains that some source code is provided for their Linux drivers.

In that same email, Marc went on to explain "Unfortunately Linuxant cannot release the source for the proprietary portions of the Conexant HCF and HSF softmodem drivers, because it does not own these
parts and the terms under which they have been licensed from Conexant prohibit it." He added that "
We have tried to attenuate the inconvenience of these restrictions by isolating
the proprietary code and releasing source for all operating-system specific
code, so that people can rebuild the modules for any kernel."

We asked Marc if he felt this situation would be played out in a way which would keep everyone happy and allow Linuxant to continue to provide Linux users with drivers they would otherwise not have. He told us "Hopefully yes. The political situation is not easy but we will continue to work hard to find reasonable compromises that both proprietary & free sides, (and especially the average Linux user) can live and be happy with, and
keep delivering badly needed drivers / hardware support that would otherwise be missing for Linux.

Why the tainted label?

Speaking of Linux users and the free software side of the issue, we emailed Linus Torvalds and asked what should happen when a proprietary driver is loaded in Linux. He replied:

Nothing much.

The code sets a "tainted" flag, which will affect all subsequent kernel fault reports, so that developers will know that the system had been using a binary-only module (this was brought on by the fact that a _lot_ of time has been wasted trying to debug problems which later turned out to be triggered by binary kernel modules. The most common of which has been the nvidia 3d-acceleration driver, which has one).

There are some internal kernel interfaces that aren't exported to non-GPL modules, but they are _really_ internal, ie no normal module should need them.

We also asked Linus what users should do if they see the "tainted" message appear as a module is loaded. He replied:

Nothing. It's a warning that kernel developers probably won't care much about problems reported that happen afterwards, and that if you have any kernel issues, you should see if they go away by _not_ using the binary module, but there is really no action otherwise needed.

Category:

  • Linux
Click Here!