EXPORT_SYMBOL_GPL recursive for shim and/or wrappers

From: Luis R. Rodriguez
Date: Mon Jun 01 2009 - 15:42:30 EST


The intention behind EXPORT_SYMBOL_GPL seems clear to me -- prevent
proprietary drivers from using GPL-only symbols. Something that to me
is clear but perhaps not to others is the the extent to which this
reaches for proprietary modules. As I interpret it proprietary modules
could _not_ make use of wrappers or shims which export new symbols
with EXPORT_SYMBOL but that those modules were themselves using
EXPORT_SYMBOL_GPL. That is create non-gpl-compatible wrapper symbols
for GPL-compatible-only symbols.

There is a cases though where the intent behind "shim" or "wrappers"
may actually not be to circumvent the GPL-compatible requirement of
code built using EXPORT_SYMBOL_GPL and although I believe it would
still constitute a violation I'd like feedback or more clarity on this
from others. The case would be where the "shim" or "wrapper" provides
realistic APIs for a framework of abstraction for different buses. In
that case the bus-agnostic API layer does make use of
EXPORT_SYMBOL_GPL for USB for example but may not make use of it for
other buses. In any case the intent here would then not to circumvent
the GPL-compatible requirement but to simply implement a bus-agnostic
API.

Does EXPORT_SYMBOL_GPL imply that modules which make use of these
symbols must also use EXPORT_SYMBOL_GPL for their own symbols? If so
then it would be clear of the recursive nature of intent.

To me the recursive nature is clear, but just wanted to ask. I also
don't see this documented in Documentation/ or in the header files,
but perhaps it should be there if such a patch is welcomed.

Luis
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/