aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGlenn L McGrath <bug1@ihug.co.nz>2003-09-03 00:42:58 +0000
committerGlenn L McGrath <bug1@ihug.co.nz>2003-09-03 00:42:58 +0000
commit759d7ececd56e5b25bbfcc54a04bf939d80c7ee9 (patch)
tree90d9424d63ee5b3b9696b1f099e3bf5b43d1b2fa
parent530ea42abc7512bcd9738a4fcef7d97c2039f82a (diff)
downloadbusybox-759d7ececd56e5b25bbfcc54a04bf939d80c7ee9.tar.gz
To load GPLONLY symbols its is required that CHECK_TAINTED_MODULES be
enabled, if not GPLONLY symbols are ignored.
-rw-r--r--modutils/Config.in1
-rw-r--r--modutils/insmod.c11
2 files changed, 8 insertions, 4 deletions
diff --git a/modutils/Config.in b/modutils/Config.in
index 71298bbff..96040cd69 100644
--- a/modutils/Config.in
+++ b/modutils/Config.in
@@ -119,6 +119,7 @@ config CONFIG_FEATURE_CHECK_TAINTED_MODULE
Support checking for tainted modules. These are usually binary
only modules that will make the linux-kernel list ignore your
support request.
+ This option is required to support GPLONLY modules.
endmenu
diff --git a/modutils/insmod.c b/modutils/insmod.c
index 54463a9d0..a6afcecea 100644
--- a/modutils/insmod.c
+++ b/modutils/insmod.c
@@ -253,7 +253,7 @@
#ifndef MODUTILS_MODULE_H
static const int MODUTILS_MODULE_H = 1;
-#ident "$Id: insmod.c,v 1.102 2003/08/31 01:58:18 bug1 Exp $"
+#ident "$Id: insmod.c,v 1.103 2003/09/03 00:42:58 bug1 Exp $"
/* This file contains the structures used by the 2.0 and 2.1 kernels.
We do not use the kernel headers directly because we do not wish
@@ -474,7 +474,7 @@ int delete_module(const char *);
#ifndef MODUTILS_OBJ_H
static const int MODUTILS_OBJ_H = 1;
-#ident "$Id: insmod.c,v 1.102 2003/08/31 01:58:18 bug1 Exp $"
+#ident "$Id: insmod.c,v 1.103 2003/09/03 00:42:58 bug1 Exp $"
/* The relocatable object is manipulated using elfin types. */
@@ -1928,14 +1928,15 @@ add_symbols_from(
struct new_module_symbol *s;
size_t i;
int used = 0;
- int gpl;
#ifdef SYMBOL_PREFIX
char *name_buf = 0;
size_t name_alloced_size = 0;
#endif
+#ifdef CONFIG_FEATURE_CHECK_TAINTED_MODULE
+ int gpl;
gpl = obj_gpl_license(f, NULL) == 0;
-
+#endif
for (i = 0, s = syms; i < nsyms; ++i, ++s) {
/* Only add symbols that are already marked external.
If we override locals we may cause problems for
@@ -1951,9 +1952,11 @@ add_symbols_from(
* their references.
*/
if (strncmp((char *)s->name, "GPLONLY_", 8) == 0) {
+#ifdef CONFIG_FEATURE_CHECK_TAINTED_MODULE
if (gpl)
((char *)s->name) += 8;
else
+#endif
continue;
}
name = (char *)s->name;