[lkml]   [2012]   [Apr]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
Patch in this message
Subject[PATCH v2] module: Clarify usage of MODULE_LICENSE()
From: "Luis R. Rodriguez" <>

While the kernel is GPLv2 individual the MODULE_LICENSE() has allowed for
these tag to be used:

* Dual BSD/GPL
* Dual MIT/GPL
* Dual MPL/GPL

This is done for historical reasons, namely questioning the compatibilty
between the GPL and some old BSD licenses. Some developers and maintainers
tend to use assume the macro is also used to help clarify if the module
source code could be shared with the BSD family, but that is not the case.
The MODULE_LICENSE() declares the module's license at run time and even for
the dual tags the run time license that applies is the GPL.

If sharing share between Linux and permissive licensed Operating Systems such
as the BSDs is desired developers should review the license on the top of
each file being considered to be shared.

Cc: Tso Ted <>
Cc: Keith Packard <>
Cc: Al Viro <>
Cc: Ralf Baechle <>
Cc: Alan Cox <>
Cc: Arend Van Spriel <>
Cc: David Woodhouse <>
Cc: Rusty Russell <>
Cc: Stephen Hemminger <>
Cc: "John W. Linville" <>
Cc: Linus Torvalds <>
Cc: Greg Kroah-Hartman <>
Signed-off-by: Luis R. Rodriguez <>

This v2 takes into consideration the historical context explained by Alan of
introducing the dual tags even fo licenses that are today considered
GPL-Compatible. It also addresses the fact that MODULE_LICENSE() is to address
a run time license, and clarifies that even if a module has all of its files
under a BSD license using MODULE_LICENSE("GPL v2") is perfectly reasonable.
This v2 also does not change any driver's MODULE_LICENSE().

include/linux/module.h | 17 +++++++++++++----
1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/include/linux/module.h b/include/linux/module.h
index fbcafe2..8d36d86 100644
--- a/include/linux/module.h
+++ b/include/linux/module.h
@@ -112,11 +112,20 @@ extern const struct gtype##_id __mod_##gtype##_table \
* "Proprietary" [Non free products]
- * There are dual licensed components, but when running with Linux it is the
- * GPL that is relevant so this is a non issue. Similarly LGPL linked with GPL
- * is a GPL combined work.
+ * The idea of dual licensing with what today are considered valid
+ * GPL-Comatible licenses is due to historical questions on GPL-Compatibility
+ * betwen the GPL and some BSD licenses. The purpose of MODULE_LICENSE() is
+ * to clarify the license of the module at run time. Despite the few
+ * GPL-Compatible dual licensed tags, when running with Linux the GPL
+ * license is the one that holds. Even if a module has all of its files
+ * under a BSD license, the MODULE_LICENSE("GPL v2") can still reasonably be
+ * used, and all files of that module could be shared with the BSD family. If
+ * the goal is to share files with the BSDs the top level license header should
+ * be read for each file that is to be shared. Each file's own license is
+ * maintaned through the usage of the Signed-of-by tag.
- * This exists for several reasons
+ * The MODULE_LICENSE() exists for several reasons:
+ * 0. So EXPORT_SYMBOL_GPL() allows the module to use its symbols
* 1. So modinfo can show license info for users wanting to vet their setup
* is free
* 2. So the community can ignore bug reports including proprietary modules

 \ /
  Last update: 2012-04-08 18:49    [W:0.046 / U:3.592 seconds]
©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site