John W. Linville 217da4e
From 69f63a67165da5e9f08c1132521598701d914573 Mon Sep 17 00:00:00 2001
John W. Linville 217da4e
From: John W. Linville <linville@tuxdriver.com>
John W. Linville 217da4e
Date: Wed, 14 Dec 2011 11:09:04 -0500
John W. Linville 217da4e
Subject: [PATCH] modpost: add option to allow external modules to avoid taint
John W. Linville 217da4e
John W. Linville 217da4e
In some cases, it might be desirable to package a module from an
John W. Linville 217da4e
external source tree alongside the base kernel.  In those cases, it
John W. Linville 217da4e
might also be desirable to not have those modules tainting the kernel.
John W. Linville 217da4e
John W. Linville 217da4e
This patch provides a mechanism for an external module build to declare
John W. Linville 217da4e
itself as an "integrated build".  Such a module is then treated the same
John W. Linville 217da4e
as an intree module.
John W. Linville 217da4e
John W. Linville 217da4e
Signed-off-by: John W. Linville <linville@tuxdriver.com>
John W. Linville 217da4e
---
John W. Linville 217da4e
Any thoughts on this?  I'm thinking of adding this to Fedora kernels,
John W. Linville 217da4e
where I have been working to integrate the compat-wireless package as
John W. Linville 217da4e
part of the base kernel RPM.
John W. Linville 217da4e
John W. Linville 217da4e
 scripts/Makefile.modpost |    1 +
John W. Linville 217da4e
 scripts/mod/modpost.c    |   10 ++++++++--
John W. Linville 217da4e
 2 files changed, 9 insertions(+), 2 deletions(-)
John W. Linville 217da4e
John W. Linville 217da4e
diff --git a/scripts/Makefile.modpost b/scripts/Makefile.modpost
John W. Linville 217da4e
index 08dce14..160c6fb 100644
John W. Linville 217da4e
--- a/scripts/Makefile.modpost
John W. Linville 217da4e
+++ b/scripts/Makefile.modpost
John W. Linville 217da4e
@@ -81,6 +81,7 @@ modpost = scripts/mod/modpost                    \
John W. Linville 217da4e
  $(if $(KBUILD_EXTMOD),-o $(modulesymfile))      \
John W. Linville 217da4e
  $(if $(CONFIG_DEBUG_SECTION_MISMATCH),,-S)      \
John W. Linville 217da4e
  $(if $(KBUILD_EXTMOD)$(KBUILD_MODPOST_WARN),-w) \
John W. Linville 217da4e
+ $(if $(INTEGRATED_BUILD),-B) \
John W. Linville 217da4e
  $(if $(cross_build),-c)
John W. Linville 217da4e
 
John W. Linville 217da4e
 quiet_cmd_modpost = MODPOST $(words $(filter-out vmlinux FORCE, $^)) modules
John W. Linville 217da4e
diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
John W. Linville 217da4e
index 2bd594e..5d077f9 100644
John W. Linville 217da4e
--- a/scripts/mod/modpost.c
John W. Linville 217da4e
+++ b/scripts/mod/modpost.c
John W. Linville 217da4e
@@ -43,6 +43,9 @@ static int warn_unresolved = 0;
John W. Linville 217da4e
 static int sec_mismatch_count = 0;
John W. Linville 217da4e
 static int sec_mismatch_verbose = 1;
John W. Linville 217da4e
 
John W. Linville 217da4e
+/* Is this a module being built as part of an integrated package? */
John W. Linville 217da4e
+static int integrated_build = 0;
John W. Linville 217da4e
+
John W. Linville 217da4e
 enum export {
John W. Linville 217da4e
 	export_plain,      export_unused,     export_gpl,
John W. Linville 217da4e
 	export_unused_gpl, export_gpl_future, export_unknown
John W. Linville 217da4e
@@ -1851,7 +1854,7 @@ static void add_header(struct buffer *b, struct module *mod)
John W. Linville 217da4e
 
John W. Linville 217da4e
 static void add_intree_flag(struct buffer *b, int is_intree)
John W. Linville 217da4e
 {
John W. Linville 217da4e
-	if (is_intree)
John W. Linville 217da4e
+	if (is_intree || integrated_build)
John W. Linville 217da4e
 		buf_printf(b, "\nMODULE_INFO(intree, \"Y\");\n");
John W. Linville 217da4e
 }
John W. Linville 217da4e
 
John W. Linville 217da4e
@@ -2101,7 +2104,7 @@ int main(int argc, char **argv)
John W. Linville 217da4e
 	struct ext_sym_list *extsym_iter;
John W. Linville 217da4e
 	struct ext_sym_list *extsym_start = NULL;
John W. Linville 217da4e
 
John W. Linville 217da4e
-	while ((opt = getopt(argc, argv, "i:I:e:cmsSo:awM:K:")) != -1) {
John W. Linville 217da4e
+	while ((opt = getopt(argc, argv, "i:I:e:cmsSo:awM:K:B")) != -1) {
John W. Linville 217da4e
 		switch (opt) {
John W. Linville 217da4e
 		case 'i':
John W. Linville 217da4e
 			kernel_read = optarg;
John W. Linville 217da4e
@@ -2139,6 +2142,9 @@ int main(int argc, char **argv)
John W. Linville 217da4e
 		case 'w':
John W. Linville 217da4e
 			warn_unresolved = 1;
John W. Linville 217da4e
 			break;
John W. Linville 217da4e
+		case 'B':
John W. Linville 217da4e
+			integrated_build = 1;
John W. Linville 217da4e
+			break;
John W. Linville 217da4e
 		default:
John W. Linville 217da4e
 			exit(1);
John W. Linville 217da4e
 		}
John W. Linville 217da4e
-- 
John W. Linville 217da4e
1.7.4.4
John W. Linville 217da4e