docs/licensing: Clarify wording about "GPL" and "Proprietary"

There are currently some doubts about out-of-tree kernel modules licensed
under GPLv3 and if they are supposed to be able to use symbols exported
using EXPORT_SYMBOL_GPL.

Clarify that "Proprietary" means anything non-GPL2 even though the
license might be an open source license. Also disambiguate "GPL
compatible" to "GPLv2 compatible".

Signed-off-by: Uwe Kleine-König <ukleinek@kernel.org>
Signed-off-by: Jonathan Corbet <corbet@lwn.net>
Link: https://lore.kernel.org/r/20241115103842.585207-2-ukleinek@kernel.org
This commit is contained in:
Uwe Kleine-König 2024-11-15 11:38:41 +01:00 committed by Jonathan Corbet
parent 21e500138b
commit d8c949c577
2 changed files with 11 additions and 9 deletions

View File

@ -587,7 +587,7 @@ Defined in ``include/linux/export.h``
Similar to :c:func:`EXPORT_SYMBOL()` except that the symbols Similar to :c:func:`EXPORT_SYMBOL()` except that the symbols
exported by :c:func:`EXPORT_SYMBOL_GPL()` can only be seen by exported by :c:func:`EXPORT_SYMBOL_GPL()` can only be seen by
modules with a :c:func:`MODULE_LICENSE()` that specifies a GPL modules with a :c:func:`MODULE_LICENSE()` that specifies a GPLv2
compatible license. It implies that the function is considered an compatible license. It implies that the function is considered an
internal implementation issue, and not really an interface. Some internal implementation issue, and not really an interface. Some
maintainers and developers may however require EXPORT_SYMBOL_GPL() maintainers and developers may however require EXPORT_SYMBOL_GPL()

View File

@ -471,14 +471,16 @@ _`MODULE_LICENSE`
source files. source files.
"Proprietary" The module is under a proprietary license. "Proprietary" The module is under a proprietary license.
This string is solely for proprietary third "Proprietary" is to be understood only as
party modules and cannot be used for modules "The license is not compatible to GPLv2".
which have their source code in the kernel This string is solely for non-GPL2 compatible
tree. Modules tagged that way are tainting third party modules and cannot be used for
the kernel with the 'P' flag when loaded and modules which have their source code in the
the kernel module loader refuses to link such kernel tree. Modules tagged that way are
modules against symbols which are exported tainting the kernel with the 'P' flag when
with EXPORT_SYMBOL_GPL(). loaded and the kernel module loader refuses
to link such modules against symbols which
are exported with EXPORT_SYMBOL_GPL().
============================= ============================================= ============================= =============================================