Smartlink non-GPL problem

I am busy compiling third-party drivers for the 2.6.25.4 kernel. Going along okay, then got this error with the Smartlink driver:

FATAL: modpost: GPL-incompatible module slusb.ko uses GPL-only symbol 'usb_unlink_urb'

I get the feeling someone has been over-zealous here. Anyway, I can modify the original exported symbol in 'usbcore.ko', but I don't know about the legalities. According to this forum thread, you can legally apply a fix but you can't tell anybody how:
http://www.nabble.com/FATAL:-modpost:-GPL-incompatible-module-slusb.ko-uses-GPL-only-symbol-'usb_unlink_urb'-td16919064.html

According to this Gentoo thread, you can fix it for yourself but not redistribute it:
http://bugs.gentoo.org/show_bug.cgi?id=218381
And quoting from that thread:

I just got bitten by this. I wonder whose idea this retarded source code
self-enforcement is.


I have figured out a fix, and 'usb_unlink_urb' turned out to be the tip of the iceberg. Anyway, I now have compiled 'slusb.ko' but apparently I can't legally put it into Puppy for distribution. I have mumbled some appropriate expletives, won't type them here.

Posted on 17 May 2008, 18:18


Comments:

Posted on 17 May 2008, 20:00 by ANOSage
I wonder whose idea this retarded source code
Curious? Most un-Aussielike? On which continent did these edicts arise? How far is Oz from Calif? EU? Does Mr Rudd receive some backhanders from Georgie, Mrs Merkel or Gordon? Some of the attractions of Puppy (Oz), Muppy (De), Wolvix (Norway), Austrumi (Latvia), AntiX (Romania), SliTaz (Fr) is that they do NOT originate from you-know-where. Strike a blow for freedom - put a two-finger salute logo in your code. The world is sick and tired of capitalist strictures.


Posted on 17 May 2008, 22:02 by tempestuous
GPL
I have been deliberately quiet on the subject, but quite a bit of wifi firmware contained in Puppy is non-GPL.
And if we want to be 100% "lawyer-safe" many audio and video codecs, although based on GPL source code, arguably infringe the intellectual property of commercial code.
I don't make any claims on this subject, myself, I'm just pointing out the issue. The developers of the LAME opensource MP3 encoder will only provide source code, which they claim is legal. But they will not provide binaries because apparently this exposes them to legal action by the "watchdog" organisation MPEG LA.

I have heard that Ubuntu and Debian have bowed to a few threats over codecs. I suggest that gettting too concerned about these things is only necessary once Puppy becomes as large as Ubuntu.


Posted on 17 May 2008, 22:57 by wildpossum
GKH is the one to ask
http://lwn.net/Articles/266724/

appears to be the explanation. It seems that the slmodem maintainers have not converted their code, despite the grace period. Perhaps they should approach GKH for help. As I understand it it's more to do with freeing the kernel internal APIs to evolve.

BTW I don't see anywhere in the Smartlink source code that says modifications are not allowed, though the license is not GPL. In any case as I understand the web page referred to, it should be possible to rewrite slmodem not to use those internal symbols.


Posted on 18 May 2008, 18:18 by Dougal
Multiple issues here
People here are confusing a few different problems:
- LAME is GPL and perfectly legal code. The problem with it is that mp3 has patents attached to it. So this is a problem if you live in Idiot Land (USA), where software patents are a problem. Also it depends on your moral beliefs (would you not use the term "ug boots" just because some greedy Yanks were given a copyright on it?)
This is why big distros don't come with mp3 support and users need to add it themselves.

- Puppy contains some firmware -- bcm43 and, I think, some Intel ipw -- which it is illegal to redistribute.
ALL (or at least most) firmware is proprietary (comes as binary blobs), and in the case of those above, the licensing forbids re-distribution.
This is why big distros don't support bcm43 out-of-the-box and why the bcm43-fwcutter tool exists -- so users can download the Windows driver and cut off the relevant part.
Again, you could make a moral argument about the manufacturer not supporting the OS you use, so fuck 'em.

- The issue with the driver is that the alusb module using that symbol is a GPL violation. That symbol is only available for GPL drivers, which theoretically means the slusb code should be considered a derivative of the Linux kernel and be made GPL.
Note also that, if I recall correctly, these modules being changed to GPL only in recent kernels is a security measure -- you don't want code you don't know (nVidia, for example) to be allowed too deeply into the kernel, as you don't know what they're doing.
The pragmatists among us will just want this driver to work (should not be hard to do -- when non-GPL code is encountered there's a special check for "ndiswrapper", so maybe something can be added there...). The question is if there's nothing else that can be done (who developed the slusb driver, anyway? is there no in-kernel alternative by now, etc.).