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

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

This is done for historical reasons, namely questioning the compatibiltybetween the GPL and some old BSD licenses. Some developers and maintainerstend to use assume the macro is also used to help clarify if the modulesource 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 forthe dual tags the run time license that applies is the GPL.

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

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

diff --git a/include/linux/module.h b/include/linux/module.hindex 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-- 1.7.10.rc1.22.gf5241