Re: Can't use SYSFS for "Proprietry" driver modules !!!.

Kyle Moffett
2005-03-27T17:41:24Z

On Mar 27, 2005, at 03:49, Arjan van de Ven wrote:
>> I think that at the moment the general consensus is that it is ok to
>> use
>> the Linux kernel APIs (but not the EXPORT_SYMBOL_GPL ones) from binary
>> modules _if_ _and_ _only_ _if_ the driver was originally written
>> elsewhere
>> and ported to the Linux kernel.
>
> I disagree there. Only a few copyright holders of the kernel suggested
> that "previously written elsewhere" would be an exception. I haven't,
> Alan Cox has been very vocal about that he hasn't. I've not seen my
> employer say that it would make that exception either.
>
> And it's a gray area.
> Is it ok if you have 5000 lines from another OS and 0 specific/modified
> for linux (the technical impossibility of this aside)
> Is 4990/10 still good?
> is 4900/100 still good ?
> is 4500/500 still good ?
> is 4000/1000 still good ?
> is 2500/2500 still good ?
> is 2000/3000 still good ?
> is 500/4500 still good ?
>
> if anyone thinks this is a loophole their lawyers better have an answer
> for this...
>
> (and note that I'm not claiming that those 4500 lines are a derived
> work
> when used elsewhere. But I do consider it a derived work if it's in a
> binary form where it does include linux specific code, and even code
> from the linux kernel via say inlines).

<flame type="Binary Driver Hatred">
NOTE: I *strongly* discourage binary drivers. They're crap and
frustrate
poor PowerPC users like me. Since this is purely a theoretical
discussion,
and I want to discourage binary crud, this email is Copyrighted:

This email is Copyright (C) 2005 Kyle Moffett.

The remainder of this email is available under the GNU General Public
License, version 2. See http://www.gnu.org/licenses/gpl.txt for
details.
THE BELOW MAY NOT BE USED IN A BINARY DRIVER, SO DON'T EVEN THINK ABOUT
IT!
</flame>

Ok, so what if the _driver_ provides an API like this:

int start_driver(void);
int stop_driver(void);
void register_alloc(void *(*alloc)(unsigned long));
void register_free(void (*free)(void *));
[... more register functions here, generic functionality ...]

And a BSD licensed bit of glue based on that interface that connects the
driver to a dozen different OSen by wrapping or using their interfaces
directly.

Do you think _that's_ legal? As far as I can see, even that level is
iffy, but it's a murky issue, and I doubt it will be decided one way or
another until people test it in various courts.

Cheers,
Kyle Moffett

-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GCM/CS/IT/U d- s++: a18 C++++>$ UB/L/X/*++++(+)>$ P+++(++++)>$
L++++(+++) E W++(+) N+++(++) o? K? w--- O? M++ V? PS+() PE+(-) Y+
PGP+++ t+(+++) 5 X R? tv-(--) b++++(++) DI+ D+ G e->++++$ h!*()>++$ r
!y?(-)
------END GEEK CODE BLOCK------