Gentoo Archives: gentoo-user

From: Fernando Rodriguez <frodriguez.developer@×××××××.com>
To: gentoo-user@l.g.o
Subject: Re: [gentoo-user] Re: [WAS: keyboard stops working] Recent kernels block the loading of non-GPL kernel modules
Date: Wed, 19 Aug 2015 19:07:51
Message-Id: BLU436-SMTP163D3FC5D5FA5DBC46A38A28D670@phx.gbl
In Reply to: Re: [gentoo-user] Re: [WAS: keyboard stops working] Recent kernels block the loading of non-GPL kernel modules by Rich Freeman
1 On Wednesday, August 19, 2015 7:00:15 AM Rich Freeman wrote:
2 > On Tue, Aug 18, 2015 at 11:12 PM, Michael Orlitzky <mjo@g.o> wrote:
3 > > On 08/18/2015 08:39 PM, Dale wrote:
4 > >>
5 > >> Here's a clue. Why doesn't the kernel devs let users decide what
6 > >> drivers they are comfy with using? If they don't like the drivers, then
7 > >> make it so that users have to install their own just like we have for
8 > >> ages but don't disable them or make them not load and work.
9 > >
10 > > A lot of people build and distribute kernels. The EXPORT_SYMBOL_GPL
11 > > thing is there to prevent those people from linking closed-source
12 > > modules against certain parts of the kernel, because the result would
13 > > not be distributable under the GPL. The legal issue is there regardless:
14 > > you can't link closed-source stuff to GPL code and then distribute the
15 > > result.
16 > >
17 >
18 > I don't really buy into that argument here.
19 >
20 > What makes nvidia.ko a derivative-work of the kernel? It doesn't
21 > contain any code not written by them.
22 >
23 > I can buy into the argument that once it is loaded into memory and
24 > linked against the kernel that the image in RAM becomes a derivative
25 > work, but nobody is making copies of that image or redistributing it.
26 >
27 > Take a 1950s science-fiction movie. If you add voice-over and call it
28 > Mystery Science Theater 3000 that is a derivative work, because it
29 > incorporates parts of the original work. If you put the voice-over on
30 > separate media and call it Rifftrax it isn't a derivative work,
31 > because it doesn't incorporate any elements of the original. That
32 > remains true even if it is dynamically linked to the original by
33 > adding an instruction to unpause the recording when the movie title
34 > appears.
35 >
36 > The whole GPL-prevents-linking argument seems rather tenuous to me,
37 > and as far as I'm aware it has never been upheld by a court. It is of
38 > course accepted as gospel in FOSS circles, but as far as I can tell it
39 > is based on arguments that are similar to those employed by the likes
40 > of Oracle and SCO wanting to copyright enums and APIs.
41 >
42 >
43 > If somebody distributes a modified kernel I buy that they have to
44 > publish the source code. If somebody says "take your kernel image and
45 > insert this blob of bytes at address foo" I don't see how making or
46 > obeying that statement is illegal. Well, a dynamic library or kernel
47 > module is just a standardized way of doing just that.
48
49 The illegal part is not loading it but distributing the blob that depends on
50 the GPL exports. Vendors can modify their blobs not to depend on GPL symbols
51 and distribute them. Unfortunately the result would be that proprietary driver
52 vendors will have to do more reinventing of the wheel introducing bugs in the
53 process.
54
55 That said, I find it hypocritical that the FSF does not condemn this practice
56 since they campaign against DRM and that's exactly what this is.
57
58 > The patch I wrote is arguably a derivative work of the kernel
59 > (reproduced here for convenience):
60 >
61 > diff --git a/include/linux/export.h b/include/linux/export.h
62 > index 96e45ea..b1bc4c3 100644
63 > --- a/include/linux/export.h
64 > +++ b/include/linux/export.h
65 > @@ -69,7 +69,7 @@ extern struct module __this_module;
66 > __EXPORT_SYMBOL(sym, "")
67 >
68 > #define EXPORT_SYMBOL_GPL(sym) \
69 > - __EXPORT_SYMBOL(sym, "_gpl")
70 > + __EXPORT_SYMBOL(sym, "")
71 >
72 > #define EXPORT_SYMBOL_GPL_FUTURE(sym) \
73 > __EXPORT_SYMBOL(sym, "_gpl_future")
74 >
75 > Now, instead of writing that suppose I instead had written this: "Edit
76 > the file include/linux/export.h, go to line 72 and remote the text
77 > enclosed in quotation marks, leaving an empty string." Would that
78 > statement be a derivative work in any way of the kernel?
79
80 I don't think it matters if it is because 1) the GPL allows you to distribute
81 derived works in source form, and 2) source code is protected by free speech
82 as long as you didn't break the law in writing it (like reverse engineering a
83 binary blob when it's license forbids it).
84
85 > That would
86 > be like arguing that I own the rights to anything anybody says which
87 > happens to mention my name.
88 >
89 >
90
91 --
92 Fernando Rodriguez

Replies