LWN.net Logo

Proprietary kernel modules - the boundary shifts?

Proprietary kernel modules - the boundary shifts?

Posted Nov 1, 2002 0:45 UTC (Fri) by scharkalvin (guest, #7372)
Parent article: Proprietary kernel modules - the boundary shifts?

Perhaps there is a way to have binary modules that comply. Write a binary module library
that performs your propritary functions and provide an interface to it. Now write your kernel module and link your kernel module with your library. Now link your module with the kernel (dynamic link, done at kernel load time so it's NOT a part of the kernel image, except in memory). Your kernel module is licensed under the GPL with an exception that you allow linking IT to a binary module. It's your module so you can do this. You provide the source to the module when you distribute it. Your module is an interface between the kernel and your binary library. Now you can hide your propritary info on your hardware, but show how to interface to it. There are already a few drivers done this way, I know of one for a sound card.


(Log in to post comments)

Proprietary kernel modules - the boundary shifts?

Posted Nov 1, 2002 3:28 UTC (Fri) by giraffedata (subscriber, #1954) [Link]

>Your kernel module is licensed under the GPL with an exception that
>you allow linking IT to a binary module. It's your module so you
>can do this

No, you can't. Not for that reason, anyway. When you take code from someone under the GPL you agree that if you redistribute it or any derived works, you will do it under the GPL. The whole GPL, not with exceptions that let someone do additional stuff with your code.

But this isn't relevant to the point made here, because the GPL doesn't say you can't dynamically link to a binary-only module. In fact, it explicitly doesn't place any restrictions at all on how you can use the code.

The issue with loadable kernel modules is that if in order to make it insmod, you have to derive the code from Linux or some other GPL code, then you can't distribute the LKM under any license but GPL.

Some people think that if you include kernel header files, or write your own C declarations based on what you read in kernel header files, you have derived your module from Linux. Others say hogwash. And the same analysis holds to what you have to do to make your own main module work with your own GPL interface module. If you copied in any legal sense from your GPL interface module to create your main module, you must distribute source code with your main module.

Copyright © 2008, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds