Re: [PATCH] USB: mark USB drivers as being GPL only

From: David Newall
Date: Tue Feb 05 2008 - 18:14:51 EST


Greg KH writes:
No, it really is not a gray area at all, especially when you are writing
a new driver for Linux. Go talk to a lawyer if you want the details.

If we're still talking about whether a kernel module is required to be released under GPL, then yes, this is not a gray area. This is something that authors of original works can decide for themselves. They have no obligation to release under GPL, however they must take special care to ensure that the module does not (statically) link with the kernel. Richard Stallman (apparently, according to Pavel Roskin, although he didn't forward Richard's message as requested) said it nicely:

According to Pavel Roskin, Richard Stallman said:
It is not in general the case that "dynamic linking cannot violate the
GPL". It depends on circumstances. Running a non-free program in a
process in a GNU/Linux system is not linking of any kind with Linux.
The program probably links with GNU libc, but the license of GNU libc
permits that.

A kernel module is akin to a process. It uses services of the kernel without being part of the kernel. However in order to use the kernel it might very well statically link with kernel support functions, such as copy_from_user(). This, it may not do without garnering a requirement to be released under GPL. That being said, a module can be written such that it only dynamically links with the kernel. Ndiswrapper is an example of how this can be done: None of the drivers that work under ndiswrapper make any direct use of the kernel, not in any way, indeed a wrapper could be written for a different operating system. There is no obligation for ndis drivers to be released under GPL, and even though they are not, they break no licence condition by calling services, even those exported as GPL-only.

Bringing this back to the point, the notion that some exported symbols may be accessed by proprietary modules and others can't is wrong. The licence under which Linux is released makes no mention of this possibility, and so no such condition exists. In order to prevent proprietary modules from using a symbol, that symbol must be provided in such a way that a second module can only statically link to it. I think that precludes exporting it via EXPORT_SYMBOL or EXPORT_SYMBOL_GPL.

Summarising the point: To claim all USB drivers must be released under GPL is wrong.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/