2010-01-29 14:47:34

by Al Viro

[permalink] [raw]
Subject: Re: Re-enabling non-GPL driver access to disk partition information

On Fri, Jan 29, 2010 at 09:15:09AM -0500, Derek Atkins wrote:

> In particular, there is now no way for a proprietary driver to access
> the gendisk partition array, to enumerate the existing partitions, or to
> get information about existing partitions. All those interfaces are now
> GPL-Only, (whereas access to the structure members before were perfectly
> legal for non-GPL modules). But now the partition structure is sitting
> behind the GPL-Only RCU abstraction.

Why the hell does disk driver care about partitioning in the first place?

2010-01-29 15:10:05

by Rik van Riel

[permalink] [raw]
Subject: Re: Re-enabling non-GPL driver access to disk partition information

On 01/29/2010 09:15 AM, Derek Atkins wrote:
> Hi Linuxers,
>
> I've been working on a proprietary disk driver which has been working
> for the past couple years on Linux as old as 2.6.18. Unfortunately,
> as of 2.6.28 it appears that some of the gendisk interfaces (read:
> structure members) I was using were moved behind an RCU and other
> GPL-ONLY accessor interfaces.

RCU is patented, with permission for GPL code to use the algorithm.

Exposing RCU bits to non-GPL modules would be rather pointless, since
those don't have permission (from IBM, the RCU patent holder) to use
RCU, anyway.

--
All rights reversed.

2010-01-29 15:21:58

by Alan

[permalink] [raw]
Subject: Re: Re-enabling non-GPL driver access to disk partition information

> get information about existing partitions. All those interfaces are now
> GPL-Only,

The kernel is GPL licensed. Please don't assume an EXPORT_SYMBOL() means
the GPL does not apply or that this magically indicates it isn't a
derivative work.

Alan

2010-01-29 15:39:10

by Derek Atkins

[permalink] [raw]
Subject: Re: Re-enabling non-GPL driver access to disk partition information

Hi,

Rik van Riel <[email protected]> writes:

> RCU is patented, with permission for GPL code to use the algorithm.
>
> Exposing RCU bits to non-GPL modules would be rather pointless, since
> those don't have permission (from IBM, the RCU patent holder) to use
> RCU, anyway.

I'm neither asking for or suggesting non-GPL access to RCU. Rather I'm
asking for non-GPL access to genhd partition information. In particular
I'm looking for:

- # of actual partitions (which I used to obtain by iterating the table
and counting -- yes, I know, gross)
- for each partition:
* partition start sector
* partition size

Alan Cox <[email protected]> writes:

>> get information about existing partitions. All those interfaces are now
>> GPL-Only,
>
> The kernel is GPL licensed. Please don't assume an EXPORT_SYMBOL() means
> the GPL does not apply or that this magically indicates it isn't a
> derivative work.

I'm not making that assumption, and the lawyers involved have made that
very very clear. (I've spent more time in meetings with lawyers in the
past month than I have working on code). However, that's why I'm just
asking for EXPORT_SYMBOL() instead of EXPORT_SYMBOL_GPL(), because I'm
not sure I can license my module under the GPL (although it can be
released under other licenses, but that doesn't give me access to
GPL-Only symbols).

I'd prefer to be able to access the partition objects directly as I had
been doing for a couple years. However I do have other alternatives if
this patch (or something like it) wont be accepted.

-derek

--
Derek Atkins, SB '93 MIT EE, SM '95 MIT Media Laboratory
Member, MIT Student Information Processing Board (SIPB)
URL: http://web.mit.edu/warlord/ PP-ASEL-IA N1NWH
[email protected] PGP key available

2010-01-29 22:05:52

by Greg KH

[permalink] [raw]
Subject: Re: Re-enabling non-GPL driver access to disk partition information

On Fri, Jan 29, 2010 at 09:15:09AM -0500, Derek Atkins wrote:
>
> Approved By: Derek Atkins <[email protected]>

What does that mean?

> --- drivers/base/core.c~ 2009-03-23 19:12:14.000000000 -0400
> +++ drivers/base/core.c 2009-10-16 12:15:57.000000000 -0400

Wrong diff level.

> @@ -1200,7 +1200,7 @@
> EXPORT_SYMBOL_GPL(device_del);
> EXPORT_SYMBOL_GPL(device_unregister);
> EXPORT_SYMBOL_GPL(get_device);
> -EXPORT_SYMBOL_GPL(put_device);
> +EXPORT_SYMBOL(put_device);

No, sorry, I've already successfully taken legal action against
companies who have tried to go around the driver core's GPL-only
symbols, so I can not, and will not, make this change.

thanks,

greg k-h

2010-01-30 04:07:35

by David Newall

[permalink] [raw]
Subject: Re: Re-enabling non-GPL driver access to disk partition information

Greg KH wrote:
> On Fri, Jan 29, 2010 at 09:15:09AM -0500, Derek Atkins wrote:
>
>> -EXPORT_SYMBOL_GPL(put_device);
>> +EXPORT_SYMBOL(put_device);
>>
>
> No, sorry, [...] I can not, and will not, make this change.
>


Derek,

Consider writing a GPL wrapper module.

David

2010-02-03 03:15:57

by Greg KH

[permalink] [raw]
Subject: Re: Re-enabling non-GPL driver access to disk partition information

On Sat, Jan 30, 2010 at 02:32:20PM +1030, David Newall wrote:
> Greg KH wrote:
>> On Fri, Jan 29, 2010 at 09:15:09AM -0500, Derek Atkins wrote:
>>
>>> -EXPORT_SYMBOL_GPL(put_device);
>>> +EXPORT_SYMBOL(put_device);
>>>
>>
>> No, sorry, [...] I can not, and will not, make this change.
>>
>
>
> Derek,
>
> Consider writing a GPL wrapper module.

Ah, the old "GPL condom" try. Sorry, but this has been tried many times
in the past, and have been shut down every time. See the Samba history
of this for lots of details as to why this does not work.

good luck,

greg k-h

2010-02-03 15:28:44

by David Newall

[permalink] [raw]
Subject: Re: Re-enabling non-GPL driver access to disk partition information

Greg KH wrote:
> On Sat, Jan 30, 2010 at 02:32:20PM +1030, David Newall wrote:
>
>> Greg KH wrote:
>>
>>> On Fri, Jan 29, 2010 at 09:15:09AM -0500, Derek Atkins wrote:
>>>
>>>
>>>> -EXPORT_SYMBOL_GPL(put_device);
>>>> +EXPORT_SYMBOL(put_device);
>>>>
>>>>
>>> No, sorry, [...] I can not, and will not, make this change.
>>>
>>>
>> Derek,
>>
>> Consider writing a GPL wrapper module.
>>
>
> Ah, the old "GPL condom" try. Sorry, but this has been tried many times
> in the past, and have been shut down every time. See the Samba history
> of this for lots of details as to why this does not work.


Samba vs The Money merely shows that The Money failed to put up a
sufficient defence. Good result for FOSS, but I recommend against you
betting your home on it.

Anyway, I was thinking of something a little more substantial that what
you perhaps read into my suggestion. There's usually a substantial gap
between the pure needs of a driver and the facilities offered by an
operating system. In the case in question, for example, the need is to
count the number of partitions, and the facility offered is get_device,
or something. A tiny GPL module that calls get_device and returns a
count sounds eminently defensible.

In addition--and please keep in mind that I'm unfamiliar with the
internals of the kernel--it seems to me there's an obvious similarity
with USL vs BSD, alleging copyright for verbatim copying of macro
constants, amongst other things. A lesson that learned then was that you
can't prevent someone from using provided facilities necessary for use
of the operating system. I don't know what put_device does, but I know
what it sounds like; it sounds like it's something that you have to use,
and so one can use it, even in proprietary code. I imagine this idea
will irritate those who put in the hard yards, but FOSS has to play by
the same rules as the monied end of town. You might want to think about
this carefully, because if it's taken all the way through court and the
GPL-only claim rejected, there may well be a run-on effect on all of the
symbols marked GPL-only. Those who want to thwart proprietary kernel
modules may find it prudent to generously give up this symbol rather
than risking the lot.

2010-02-04 00:30:22

by Robert Hancock

[permalink] [raw]
Subject: Re: Re-enabling non-GPL driver access to disk partition information

On 02/03/2010 09:28 AM, David Newall wrote:
> Greg KH wrote:
>> On Sat, Jan 30, 2010 at 02:32:20PM +1030, David Newall wrote:
>>> Greg KH wrote:
>>>> On Fri, Jan 29, 2010 at 09:15:09AM -0500, Derek Atkins wrote:
>>>>> -EXPORT_SYMBOL_GPL(put_device);
>>>>> +EXPORT_SYMBOL(put_device);
>>>> No, sorry, [...] I can not, and will not, make this change.
>>> Derek,
>>>
>>> Consider writing a GPL wrapper module.
>>
>> Ah, the old "GPL condom" try. Sorry, but this has been tried many times
>> in the past, and have been shut down every time. See the Samba history
>> of this for lots of details as to why this does not work.
>
>
> Samba vs The Money merely shows that The Money failed to put up a
> sufficient defence. Good result for FOSS, but I recommend against you
> betting your home on it.
>
> Anyway, I was thinking of something a little more substantial that what
> you perhaps read into my suggestion. There's usually a substantial gap
> between the pure needs of a driver and the facilities offered by an
> operating system. In the case in question, for example, the need is to
> count the number of partitions, and the facility offered is get_device,
> or something. A tiny GPL module that calls get_device and returns a
> count sounds eminently defensible.
>
> In addition--and please keep in mind that I'm unfamiliar with the
> internals of the kernel--it seems to me there's an obvious similarity
> with USL vs BSD, alleging copyright for verbatim copying of macro
> constants, amongst other things. A lesson that learned then was that you
> can't prevent someone from using provided facilities necessary for use
> of the operating system. I don't know what put_device does, but I know
> what it sounds like; it sounds like it's something that you have to use,
> and so one can use it, even in proprietary code. I imagine this idea
> will irritate those who put in the hard yards, but FOSS has to play by
> the same rules as the monied end of town. You might want to think about
> this carefully, because if it's taken all the way through court and the
> GPL-only claim rejected, there may well be a run-on effect on all of the
> symbols marked GPL-only. Those who want to thwart proprietary kernel
> modules may find it prudent to generously give up this symbol rather
> than risking the lot.

The GPL flag on the symbols has no legal weight. What does have legal
weight is whether whatever you're linking into the kernel can be
considered a derivative work of the kernel or not. The intent of the
EXPORT_SYMBOL_GPL flag is to warn that if you're using these symbols,
then you're hooking into something sufficiently internal that you may be
considered a derivative work. However, using symbols marked GPL in a
non-GPL module doesn't necessarily mean you're violating the GPL, nor
does not using them mean you're not. The only one that can give a
definitive answer for any particular piece of code is likely a lawyer.