Discussion about GPL2 - what is allowed and what not?

Due to the most recent events regarding the kernel 5.9 and new functionality around tainted modules which prevent nvidia opencl from working I want to start a discussion about the GPL2 license.

In one of the dedicated threads about this nvidia topic it was proposed to revert that kernel 5.9 patch which introduced this new inherit_taint functionality which would make opencl work again. @philm was rejecting this with the following comment:

This statement really surprised me. And I replied to it:

And I added some supporting links in my reply.

My interpretation of the GPL2 is, that it grants you all the rights to change anything and distribute it as long as the result is still under GPL2. The GPL2 is very explicit about these rights. This is core of the license.

So where is this thinking coming from that a change to the linux kernel might break any law? Is this the predominate opinion of the Manjaro team?

Lets discuss this.

1 Like

I think its pretty clear with a number of examples … for example first ddg phoronix link:

Linux 5.9 Brings Safeguard Following NVIDIA's Recent "GPL Condom" Incident - Phoronix

Or this one from the register:

Wrap it before you tap it? No, say Linux developers: 'GPL condom' for Nvidia driver is laughed out of the kernel • The Register

These should give you an idea … but go ahead and dig further if it is not clear.

1 Like

Closing this as a duplicate, you got an answer in previous post.

Not a dublicate, a separate discussion stemming from the previous one.

1 Like

Thank you for reopening this thread. This topic is becoming bigger than I initially thought.

After this thread was closed I posted a patch tutorial for the kernel 5.9 to get the nvidia opencl modules working again. This tutorial was unlisted by philm with the accusation that it is illegal to patch the kernel source in that way or, to be more precise, that it is illegal to post the instructions on the Manjaro forum.

So here we are. What is allowed and what is illegal? Is it illegal to patch the kernel? Certainly not all patches are illegal. Which patches are illegal? Do we have patches which are covered by the GPL2 and other patches which are violating the GPL2? What does the GPL2 say about modifying the source code?

And as a secondary discussion point: What is illegal to post here in the forum? Can a technical tutorial in the forum be illegal at all?

I would very much appreciate if many people join this discussion and we all come to a mutual agreement. But I am mainly interested to here the opinion of the Manjaro team on this topic.

3 Likes

Does the patch cause the tainted ā€˜p’ flag to be set? Indicating a module without GPL, or compatible, license has been loaded?

https://www.kernel.org/doc/html/latest/admin-guide/tainted-kernels.html

The patch actually reverts the initial patch from Hellwig. Anyways, why does that question matter? The GPL2 does not distinguish between good or bad modifications of the source code.

We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software.

1 Like

Sure it can. Any technical tutorials for illegal activities are not permitted. The fact that something is a technical tutorial is very much irrelevant to its legality.

I am not an expert, but it is my understanding that gpl2 does not permit mixing licenses. If your code uses gpl2 software, it also must be released under gpl2. It is further my understanding that the nvidias gpl-condom is in violation of this: it depends on the code of both gpl2 linux kernel and the proprietary nvidia driver. The Hellwigs patch was to prevent this.

I think this is what Philm meant when he labeled the tutorial illegal.

Personally I didn’t see the tutorial as problematic. Kernel patching is fine and we were missing a kernel patching tutorial. Manjaro needs to follow upstream in this matter and we can’t be distributing kernel with questionable patches, but if someone wants to do it on their own machine, then that’s their business in my opinion.

2 Likes

@mbod you simply can’t post stuff on how to violate the GPL. Also Nvidia is aware of it and will come to a solution mid-November. Their official statement for now: Simply don’t update to 5.9 yet, if you still want a fully functional driver by Nvidia!

@philm: This is exactly the question for this thread.

What you are saying is that this patch is violating the GPL. I am saying it is not. The only thing that is not allowed according to the GPL is to change the license of the source code or even to make it closed source.

But other than that the GPL is very clear that any modification of the source code is allowed. As long as the resulting source code is published under the GPL.

Reverting a linux patch, like this one from Hellwig modules: inherit TAINT_PROPRIETARY_MODULE Ā· torvalds/linux@262e6ae Ā· GitHub can never harm the license.

What you are saying is that the developers of the linux kernel are giving no permission to revert that patch. That is against the GPL2.

And I am going even further: Someone could take out all the GPL restrictions they have build into the kernel, e.g. EXPORT_SYMBOL_GPL and such, and publish this under the GPL2. No developer of the kernel can ever take that right from you.

And a tutorial to do that source code change can never be illegal for sure.This is my take on the GPL2.I have quoted the relevant passages of the GPL2 and shared a link to the full text of the license. @philm please be specific where you see the license violation.

EDIT:
I have shared my patch on the nvidia developer list without any issue:

2 Likes

Nvidia has been caught by the patrol ,
https://www.phoronix.com/scan.php?page=news_item&px=Linux-Kernel-Blocking-NV-NetGPU

the EXPORT_SYMBOL_GPL can only works with GPL licence , YOU CANT OFFER this to binary or any DRM ,
that means for Nvidia that with the access tainted before they can use ALL symbols exported , not any more in Linux5.9

We know about these restrictions in the kernel. The topic of this thread is whether the GPL2 allows you to revert all these restrictive patches and if it is illegal to post tutorials about this ā€œpatch revertsā€ and if it is reasonable to delete posts in this forum which talk about it.

We are discussing here a fundamental question about the rights the GPL2 is giving all of us. And if censorship is applicable by the forum moderators if somebody is posting a patch for the kernel.

The GPL2 does not distinguish between good or bad modifications of the source code. Therefore my interpretation of the GPL2 is: Any source code patch is allowed. But I repeat myself.

And I have kindly asked @philm to be more specific about where exactly he sees the violation of the license when a patch tutorial is posted.

2 Likes

you don’t understand : since nvidia drivers will come with linux59+ ,
all others kernels will be patched with GPL for security GPL nothing more

I don’t think it is illegal, however I can understand that Phil/ManjaroTeam do not want to have this in their forum.

If I’d host a forum about cars and there is a topic ā€œHow to unlock your new BMW without having the keys in less than 30 secondsā€, I’d also remove it. (Ok, this example is more drastic than circumventing the GPL, but still it kind of goes into the same direction :wink: )

About reverting/patching the GPL code change itself:
As long as you do it for yourself and not redistribute it, I guess it is not an issue (nobody would care / sue your for that anyways).

However as a distro which redistributes the kernel this could probably run you into trouble.

@stephane, please forget about nvidia for a moment. This thread is not about nvidia although my nvidia related patch tutorial triggered this discussion.

This is about a forum moderator who has unlisted a patch tutorial with the remark that it is illegal. The generic question raised by this activity is: Can a kernel patch tutorial be illegal? Can patching itself be illegal?

So far I have only seen a generic claim that a a patch tutorial is illegal but I have not seen yet any argument where exactly the violation of the GPL is coming from.

I am more in favor of the explanation @moson is giving. This is more a matter of ā€œvorauseilendem Gehorsamā€ (Vorauseilender Gehorsam – Wikipedia) than anything else. The first 3 sentences of this wiki article describe it perfectly.

Sorry for the german quote here, but this wiki page is not available in english.

2 Likes

Where do you see this trouble coming from? Lets say you take out 10 lines of code from the kernel source and publish the modified source code under the same GPL2 license. Where is the problem?

This is the whole idea of a copyleft license. Copyleft - Wikipedia

  1. you can patch your own kernel
  2. you cant patch a distribution kernel unless :
    it’s for testing or is approved by stable kernel linux for requests or incoming

revert are apply in 2 conditions

  • previous patch increase regression , here this is NOT a regression
  • it was worked a little more before ( there is still something to do after )

in this case , it 's was a ā€œholeā€ in export symbols GPL from 2008 that has been fixed.

in you case , apply this revert on distribution for this point is asking to apply this revert to stable kernel…
classic nvidia driver works , not new udm driver.

I am not a lawyer or anything, but reading these lines:

https://lkml.org/lkml/2020/7/30/58

https://lkml.org/lkml/2020/7/30/61

we’ve had a bug in our resolution of _GPL modules since day one, that
is a module can claim to be GPL licensed and use _GPL exports, while
it also depends on symbols from non-GPL modules. This is used as a
circumvention of the _GPL exports by using a small shim module using
the _GPL exports and the other functionality.

If a TAINT_PROPRIETARY_MODULE exports symbol, inherit the taint flag
for all modules importing these symbols, and don’t allow loading
symbols from TAINT_PROPRIETARY_MODULE modules if the module previously
imported gplonly symbols. Add a anti-circumvention devices so people
don’t accidentally get themselves into trouble this way.

So with this code change it enforces GPL compatibility even for those shim/glue-code modules that were used to make the bridge to non GPL code. Now if you actively remove these check again to make it possible to mix code with different licensing and you redistribute this package (which violates GPL), you could probably be sued. (ā€œpeople don’t accidentially get themselves into troubleā€ā€¦)

But again, that’s just what I assume is the case. I’m by far not an expert and might be totally wrong here.

Btw.: Has anyone seen any distro that is patching and remove this check in their kernel package?

3 Likes