"A change after 2.6.24 broke ndiswrapper by accidentally removing its access to GPL-only symbols," noted Pavel Roskin, offering a patch to address the issue. Linux creator Linus Torvalds was unimpressed, "I'm not seeing why ndiswrapper should be treated separately. If it loads non-GPL modules, it shouldn't be able to use GPLONLY symbols." The NDISwrapper project page explains, "many vendors do not release specifications of the hardware or provide a Linux driver for their wireless network cards. This project implements Windows kernel API and NDIS (Network Driver Interface Specification) API within Linux kernel. A Windows driver for wireless network card is then linked to this implementation so that the driver runs natively, as though it is in Windows, without binary emulation." Due to this, Linus explained:
"Ndiswrapper itself is *not* compatible with the GPL. Trying to claim that ndiswrapper somehow itself is GPL'd even though it then loads modules that aren't is stupid and pointless. Clearly it just re-exports those GPLONLY functions to code that is *not* GPL'd."
From: Pavel Roskin <proski@...> Subject: [PATCH 2.6.25] module: allow ndiswrapper to use GPL-only symbols [0]Date: Feb 28, 6:11 pm 2008 A change after 2.6.24 broke ndiswrapper by accidentally removing its access to GPL-only symbols. Revert that change and add comments about the reasons why ndiswrapper and driverloader are treated in a special way. Signed-off-by: Pavel Roskin <proski@gnu.org> --- kernel/module.c | 9 ++++++++- 1 files changed, 8 insertions(+), 1 deletions(-) diff --git a/kernel/module.c b/kernel/module.c index 901cd6a..a11f523 100644 --- a/kernel/module.c +++ b/kernel/module.c @@ -1933,8 +1933,15 @@ static struct module *load_module(void __user *umod, /* Set up license info based on the info section */ set_license(mod, get_modinfo(sechdrs, infoindex, "license")); + /* + * ndiswrapper is under GPL by itself, but loads proprietary modules. + * Don't use add_taint_module(), as it would prevent ndiswrapper from + * using GPL-only symbols it needs. + */ if (strcmp(mod->name, "ndiswrapper") == 0) - add_taint_module(mod, TAINT_PROPRIETARY_MODULE); + add_taint(TAINT_PROPRIETARY_MODULE); + + /* driverloader was caught wrongly pretending to be under GPL */ if (strcmp(mod->name, "driverloader") == 0) add_taint_module(mod, TAINT_PROPRIETARY_MODULE); -- Regards, Pavel Roskin --
From: Linus Torvalds <torvalds@...> Subject: Re: [PATCH 2.6.25] module: allow ndiswrapper to use GPL-only symbols [0]Date: Feb 28, 7:25 pm 2008 On Thu, 28 Feb 2008, Pavel Roskin wrote: > > A change after 2.6.24 broke ndiswrapper by accidentally removing its > access to GPL-only symbols. Revert that change and add comments about > the reasons why ndiswrapper and driverloader are treated in a special > way. I'm not seeing why ndiswrapper should be treated separately. If it loads non-GPL modules, it shouldn't be able to use GPLONLY symbols. So if ndiswrapper needs GPL-only symbols, you'd better ask the people who made those symbols GPL-only whether they could be made available to ndiswrapper. ndiswrapper itself is *not* compatible with the GPL. Trying to claim that ndiswrapper somehow itself is GPL'd even though it then loads modules that aren't is stupid and pointless. Clearly it just re-exports those GPLONLY functions to code that is *not* GPL'd. Linus --
From: Pavel Roskin <proski@...> Subject: Re: [PATCH 2.6.25] module: allow ndiswrapper to use GPL-only symbols [0]Date: Feb 29, 2:20 am 2008 Quoting Linus Torvalds <torvalds@linux-foundation.org>: > On Thu, 28 Feb 2008, Pavel Roskin wrote: >> >> A change after 2.6.24 broke ndiswrapper by accidentally removing its >> access to GPL-only symbols. Revert that change and add comments about >> the reasons why ndiswrapper and driverloader are treated in a special >> way. > > I'm not seeing why ndiswrapper should be treated separately. It is already treated separately, and has been for a long time. Since ndiswrapper taints itself when it loads a proprietary NDIS module, I don't think any special treatment is needed anymore, but that's beyond my point. All I'm trying to do it to revert a patch that, as its author admitted, had unexpected consequences: http://kerneltrap.org/mailarchive/linux-kernel/2008/1/30/648044 [1] > If it loads non-GPL modules, it shouldn't be able to use GPLONLY symbols. This is not the original intention of GPLONLY. GPLONLY exists to prevent loading of modules that are proprietary, but can be considered to be Linux derivatives due to their use of Linux specific API. In case of ndiswrapper, there is no question that ndiswrapper is a Linux derivative, but it's under GPL. Yet the proprietary modules are not Linux derivatives because they don't use Linux API. In fact, they were never intended to run on Linux. By using GPLONLY to exclude ndiswrapper, you would give GPLONLY an additional meaning, namely functions that are not available to ndiswrapper. > So if ndiswrapper needs GPL-only symbols, you'd better ask the people who > made those symbols GPL-only whether they could be made available to > ndiswrapper. That would mean that I would have to ask those symbols to be opened to proprietary Linux kernel modules as well, which is not my intention. > ndiswrapper itself is *not* compatible with the GPL. Trying to claim that > ndiswrapper somehow itself is GPL'd even though it then loads modules that > aren't is stupid and pointless. Clearly it just re-exports those GPLONLY > functions to code that is *not* GPL'd. Simple re-exporting would be useless. It's a wrapper that isolates NDIS API from Linux API. Anything Linux specific is in ndiswrapper itself. The proprietary modules call only NDIS functions. I believe, the license is a choice of the copyright holders. Apart from that, I don't feel qualified to discuss any legal matters. -- Regards, Pavel Roskin --
From: Linus Torvalds <torvalds@...> Subject: Re: [PATCH 2.6.25] module: allow ndiswrapper to use GPL-only symbols [1]Date: Feb 29, 12:08 pm 2008 On Fri, 29 Feb 2008, Pavel Roskin wrote: > > > > I'm not seeing why ndiswrapper should be treated separately. > > It is already treated separately, and has been for a long time. No, I mean "separately from the thing it loads". It loads non-GPL code, it is non-GPL. > > If it loads non-GPL modules, it shouldn't be able to use GPLONLY symbols. > > This is not the original intention of GPLONLY. GPLONLY exists to prevent > loading of modules that are proprietary, but can be considered to be Linux > derivatives due to their use of Linux specific API. Exactly. And ndiswrapper loads proprietary modules. You're not following the argument. There was a reason ndiswrapper was marked for tainting. Linus --
From: Zan Lynx <zlynx@...> Subject: Re: [PATCH 2.6.25] module: allow ndiswrapper to use GPL-only symbols [1]Date: Feb 29, 12:59 pm 2008 On Fri, 2008-02-29 at 08:08 -0800, Linus Torvalds wrote: [cut] > It loads non-GPL code, it is non-GPL. [cut] > Exactly. And ndiswrapper loads proprietary modules. The Linux kernel itself will load proprietary modules. It does not as a general rule, but it will. Is the Linux kernel then not GPL? No. This argument doesn't work, Linus. There exists at least one GPL NDIS driver[1]. How about if everyone involved piously promises to load it at least once? [1] http://cipe-win32.sourceforge.net/ [2] --=20 Zan Lynx <zlynx@acm.org>
From: Linus Torvalds <torvalds@...> Subject: Re: [PATCH 2.6.25] module: allow ndiswrapper to use GPL-only symbols [2]Date: Feb 29, 1:07 pm 2008 On Fri, 29 Feb 2008, Zan Lynx wrote: > > The Linux kernel itself will load proprietary modules. It does not as a > general rule, but it will. .. and it doesn't export GPLONLY modules to them. How stupid do you have to be to not understand that? Linus --
From: Pavel Roskin <proski@...> Subject: Re: [PATCH 2.6.25] module: allow ndiswrapper to use GPL-only symbols [2]Date: Feb 29, 1:20 pm 2008 On Fri, 2008-02-29 at 09:07 -0800, Linus Torvalds wrote: > > On Fri, 29 Feb 2008, Zan Lynx wrote: > > > > The Linux kernel itself will load proprietary modules. It does not as a > > general rule, but it will. > > .. and it doesn't export GPLONLY modules to them. > > How stupid do you have to be to not understand that? Actually, it's a flawed comparison. The only thing ndiswrapper exports to NDIS modules is NDIS API. GPLONLY symbols are only used to implement that API in the code that's under GPL. That's the code you can fork, change and redistribute. -- Regards, Pavel Roskin --
From: Linus Torvalds <torvalds@...> Subject: Re: [PATCH 2.6.25] module: allow ndiswrapper to use GPL-only symbols [2]Date: Feb 29, 1:33 pm 2008 On Fri, 29 Feb 2008, Pavel Roskin wrote: > > Actually, it's a flawed comparison. The only thing ndiswrapper exports > to NDIS modules is NDIS API. GPLONLY symbols are only used to implement > that API in the code that's under GPL. That's the code you can fork, > change and redistribute. .. and it's stuill just a wrapper. A fairly thick one, but still... More importantly, none of the people arguing against this at all even reacted to my suggestion for how to fix things *properly* in my original email. Which just means that you're apparently not interested in actually fixing this, you're just trying to disagree about some interpretation of GPLONLY. In other words: the next person who can't even be bothered to tell what symbols are involved and why they haven't asked whether those symbols could instead be relaxed, automaticaly will go into my "flamers" filter, and just stay there. Then you can complain as much as you like, and I'll never see it. Linus --
From: Pavel Roskin <proski@...> Subject: Re: [PATCH 2.6.25] module: allow ndiswrapper to use GPL-only symbols [2]Date: Feb 29, 3:39 pm 2008 On Fri, 2008-02-29 at 09:33 -0800, Linus Torvalds wrote: > > On Fri, 29 Feb 2008, Pavel Roskin wrote: > > > > Actually, it's a flawed comparison. The only thing ndiswrapper exports > > to NDIS modules is NDIS API. GPLONLY symbols are only used to implement > > that API in the code that's under GPL. That's the code you can fork, > > change and redistribute. > > .. and it's stuill just a wrapper. > > A fairly thick one, but still... So it the Linux syscall interface. It's a wrapper around the kernel internals, including GPLONLY symbols. Yet some userspace programs are proprietary. > More importantly, none of the people arguing against this at all even > reacted to my suggestion for how to fix things *properly* in my original > email. Which just means that you're apparently not interested in actually > fixing this, you're just trying to disagree about some interpretation of > GPLONLY. I'm actually interested in fixing this, or I would not have sent a patch. > In other words: the next person who can't even be bothered to tell what > symbols are involved and why they haven't asked whether those symbols > could instead be relaxed, automaticaly will go into my "flamers" filter, > and just stay there. Then you can complain as much as you like, and I'll > never see it. Well, here's the list __create_workqueue_key destroy_workqueue flush_workqueue queue_work task_nice usb_alloc_urb usb_buffer_alloc usb_buffer_free usb_clear_halt usb_control_msg usb_deregister usb_free_urb usb_get_current_frame_number usb_get_descriptor usb_get_status usb_ifnum_to_if usb_init_urb usb_kill_urb usb_lock_device_for_reset usb_register_driver usb_reset_configuration usb_reset_device usb_set_interface usb_submit_urb usb_unlink_urb I already know what USB folks will say. They want proprietary drivers to be in the userspace. I doubt ndiswrapper will ever be ported to the userspace. It's much more likely that some other approach will be used. -- Regards, Pavel Roskin --
From: Linus Torvalds <torvalds@...> Subject: Re: [PATCH 2.6.25] module: allow ndiswrapper to use GPL-only symbols [2]Date: Feb 29, 3:53 pm 2008 On Fri, 29 Feb 2008, Pavel Roskin wrote: > > I already know what USB folks will say. They want proprietary drivers > to be in the userspace. I doubt ndiswrapper will ever be ported to the > userspace. It's much more likely that some other approach will be used. If that's the case, then talk to the USB people. Maybe they are ok with wrapping them in GPL wrappers. But it sounds like they would prefer the stricter GPLONLY meaning (ie no ndiswrapper), and it's their code. Linus --
From: Pavel Roskin <proski@...> Subject: Re: [PATCH 2.6.25] module: allow ndiswrapper to use GPL-only symbols [2]Date: Feb 29, 4:08 pm 2008 On Fri, 2008-02-29 at 11:53 -0800, Linus Torvalds wrote: > > On Fri, 29 Feb 2008, Pavel Roskin wrote: > > > > I already know what USB folks will say. They want proprietary drivers > > to be in the userspace. I doubt ndiswrapper will ever be ported to the > > userspace. It's much more likely that some other approach will be used. > > If that's the case, then talk to the USB people. Maybe they are ok with > wrapping them in GPL wrappers. But it sounds like they would prefer the > stricter GPLONLY meaning (ie no ndiswrapper), and it's their code. This still leaves us with the workqueue interface: __create_workqueue_key destroy_workqueue flush_workqueue queue_work ndiswrapper has its own workqueue implementation, but it would be great to avoid code duplication. As for task_nice(), it's strange that task_nice() is GPLONLY, but set_user_nice() is not. Anyway, it can probably be worked around. -- Regards, Pavel Roskin --
From: Linus Torvalds <torvalds@...> Subject: Re: [PATCH 2.6.25] module: allow ndiswrapper to use GPL-only symbols [2]Date: Feb 29, 4:28 pm 2008 On Fri, 29 Feb 2008, Pavel Roskin wrote: > > This still leaves us with the workqueue interface: > > __create_workqueue_key > destroy_workqueue > flush_workqueue > queue_work Hmm. Personally, I don't see those as being a big issue, but they've been marked GPL-only for a long while. The thing is, I personally don't mind, and I think "derived code" is what matters, but others disagree, and quite frankly, I'm not going to force them - I have my _personal_ beliefs, but hey, others have theirs. So you really need to talk to not me, but to the people who actually wrote and maintain that code. When they come back and say "yeah, we think ndiswrapper is a special case and we're ok with it", I'll happily either mark those things non-GPL or just mark ndiswrapper special in the module loader again. Quite frankly, I don't care about ndiswrapper enough (at all) to push this along in the least. Linus --
From: Pavel Roskin <proski@...> Subject: Re: [PATCH 2.6.25] module: allow ndiswrapper to use GPL-only symbols [2]Date: Feb 29, 5:13 pm 2008 On Fri, 2008-02-29 at 12:28 -0800, Linus Torvalds wrote: > > On Fri, 29 Feb 2008, Pavel Roskin wrote: > > > > This still leaves us with the workqueue interface: > > > > __create_workqueue_key > > destroy_workqueue > > flush_workqueue > > queue_work > > Hmm. Personally, I don't see those as being a big issue, but they've been > marked GPL-only for a long while. > > The thing is, I personally don't mind, and I think "derived code" is what > matters, but others disagree, and quite frankly, I'm not going to force > them - I have my _personal_ beliefs, but hey, others have theirs. > > So you really need to talk to not me, but to the people who actually wrote > and maintain that code. As far as I can tell, those people have never tried to prevent ndiswrapper from using their code. Both times ndiswrapper was prevented from using GPLONLY symbols, it was done unintentionally. > When they come back and say "yeah, we think > ndiswrapper is a special case and we're ok with it", I'll happily either > mark those things non-GPL or just mark ndiswrapper special in the module > loader again. OK, I'll keep it in mind in case such approach actually becomes necessary. -- Regards, Pavel Roskin --
From: Chris Friesen <cfriesen@...> Subject: Re: [PATCH 2.6.25] module: allow ndiswrapper to use GPL-only symbols [2]Date: Feb 29, 12:54 pm 2008 Linus Torvalds wrote: > > On Fri, 29 Feb 2008, Pavel Roskin wrote: > >>>I'm not seeing why ndiswrapper should be treated separately. >> >>It is already treated separately, and has been for a long time. > > > No, I mean "separately from the thing it loads". > > It loads non-GPL code, it is non-GPL. But the GPL only applies to derivative works. Given that ndiswrapper loads binaries designed for another OS, doesn't that mean that it is unlikely that the binaries would be impacted by the GPL? So the portion that is a derivative work (ndiswrapper itself) is GPL, and it loads something that is clearly not a derivative work. From a licensing standpoint how is this different than an open-source driver loading a proprietary firmware? Once ndiswrapper loads the binary blob the kernel should be considered tainted from a debuggability standpoint, but I have some sympathy for an argument suggesting that ndiswrapper should be able to use GPLONLY symbols. Chris --
From: Linus Torvalds <torvalds@...> Subject: Re: [PATCH 2.6.25] module: allow ndiswrapper to use GPL-only symbols [2]Date: Feb 29, 1:06 pm 2008 On Fri, 29 Feb 2008, Chris Friesen wrote: > > But the GPL only applies to derivative works. Given that ndiswrapper loads > binaries designed for another OS, doesn't that mean that it is unlikely that > the binaries would be impacted by the GPL? But that's what GPLONLY means. What's so hard to understand? The driver may not be a derivative work, but it sure as hell isn't GPL'd. So stop blathering. ndiswrapper has one purpose, and one purpose only: to load non-GPL'd code. So OF COURSE it shouldn't touch GPLONLY functions. Linus --
Related links:
- Archive of above thread [2]