The company that I work for, develops a Linux-based in-house distro, which powers some hardware-based equipment. The project that I am working on, has some proprietary kernel modules, and proprietary user space components, which contain the important business logic.
We are currently in the process of integrating a graphics card, for which we need to compile an out-of-tree GPLv2 kernel module (we have the source code available). As our kernel version is a bit old, we will most likely need to patch the driver, so that it compiles against our kernel. We might also need to patch it, if we find some bugs in the existing code, or if we find some optimizations.
My questions are the following:
If I modify the driver, what are my obligations, according to the GPLv2 license ?
Is it enough, if I publish the driver source code, along with the modified patches if anyone asks for them, or does the license also extend to the other (proprietary kernel modules and userspace) components in the system ?
The rest of the proprietary components (kernel and user-space), make use of the driver, through standard OS interfaces (i.e ioctl calls.)
Having to release the (modified) source code (or patches) for the graphics card kernel module is fine for my company, but releasing all the existing proprietary code as open-source is a deal-breaker. I would definitely intend to talk my company into upstreaming any optimizations that we find, but some patches may be just in order to compile the code, and make it work without crashes on our kernel. So, the chance for the latter category of getting upstreamed, might be close to zero.
The person responsible for the Legal part in my company, seems to interpret the license in the most risk-adverse way, but I am not entirely sure that he understands software. Basically, if I were to follow his opinion, my only option would be to ask the company that produces the graphics card, to license to us the driver under a separate (non-GPLv2) license. I'm not sure if this is possible.
The other option that I would think of, is some kind of trickery, so that we move all our existing code from the our kernel modules into user-space, and keep a kind of dummy code into the kernel, that we can release under GPL. But this seems too extreme to me, and I would leave it as a last resort option.
Also, I would like to know who might sue the company in case of breach of GPL. Is it only the company that produces the graphics card ?
As I don't have a lot experience in dealing with open-source I would like to ask the members of the community, if they found themselves in a similar situation, and what would they advise me.