diff options
Diffstat (limited to 'modutils')
-rw-r--r-- | modutils/config.in | 4 | ||||
-rw-r--r-- | modutils/insmod.c | 8 | ||||
-rw-r--r-- | modutils/lsmod.c | 26 |
3 files changed, 20 insertions, 18 deletions
diff --git a/modutils/config.in b/modutils/config.in index 7fe7ec195..10b0a9c33 100644 --- a/modutils/config.in +++ b/modutils/config.in @@ -29,5 +29,9 @@ if [ "$CONFIG_LSMOD" = "y" ]; then fi fi +if [ "$CONFIG_INSMOD" = "y" -o "$CONFIG_LSMOD" = "y" ]; then + bool 'Support tainted module checking with new kernels' CONFIG_FEATURE_CHECK_TAINTED_MODULE +fi + endmenu diff --git a/modutils/insmod.c b/modutils/insmod.c index b246d90af..b367e84af 100644 --- a/modutils/insmod.c +++ b/modutils/insmod.c @@ -234,7 +234,7 @@ #ifndef MODUTILS_MODULE_H static const int MODUTILS_MODULE_H = 1; -#ident "$Id: insmod.c,v 1.90 2002/09/16 05:30:24 andersen Exp $" +#ident "$Id: insmod.c,v 1.91 2002/10/10 04:20:21 andersen 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 @@ -455,7 +455,7 @@ int delete_module(const char *); #ifndef MODUTILS_OBJ_H static const int MODUTILS_OBJ_H = 1; -#ident "$Id: insmod.c,v 1.90 2002/09/16 05:30:24 andersen Exp $" +#ident "$Id: insmod.c,v 1.91 2002/10/10 04:20:21 andersen Exp $" /* The relocatable object is manipulated using elfin types. */ @@ -3422,6 +3422,7 @@ static void hide_special_symbols(struct obj_file *f) ELFW(ST_INFO) (STB_LOCAL, ELFW(ST_TYPE) (sym->info)); } +#ifdef CONFIG_FEATURE_CHECK_TAINTED_MODULE static int obj_gpl_license(struct obj_file *f, const char **license) { struct obj_section *sec; @@ -3533,6 +3534,9 @@ static void check_tainted_module(struct obj_file *f, char *m_name) if (fd >= 0) close(fd); } +#else /* CONFIG_FEATURE_CHECK_TAINTED_MODULE */ +#define check_tainted_module(x, y) do { } while(0); +#endif /* CONFIG_FEATURE_CHECK_TAINTED_MODULE */ extern int insmod_main( int argc, char **argv) { diff --git a/modutils/lsmod.c b/modutils/lsmod.c index a2a582389..a03247f73 100644 --- a/modutils/lsmod.c +++ b/modutils/lsmod.c @@ -40,13 +40,15 @@ #include "busybox.h" - +#ifndef CONFIG_FEATURE_CHECK_TAINTED_MODULE +static inline void check_tainted(void) { printf("\n"); } +#else #define TAINT_FILENAME "/proc/sys/kernel/tainted" #define TAINT_PROPRIETORY_MODULE (1<<0) #define TAINT_FORCED_MODULE (1<<1) #define TAINT_UNSAFE_SMP (1<<2) -void check_tainted(void) +static void check_tainted(void) { int tainted; FILE *f; @@ -66,6 +68,7 @@ void check_tainted(void) printf(" Not tainted\n"); } } +#endif #ifdef CONFIG_FEATURE_QUERY_MODULE_INTERFACE @@ -111,6 +114,7 @@ static int my_query_module(const char *name, int which, void **buf, return my_ret; } +#endif extern int lsmod_main(int argc, char **argv) { @@ -170,26 +174,16 @@ extern int lsmod_main(int argc, char **argv) return( 0); } -#else /*CONFIG_FEATURE_OLD_MODULE_INTERFACE*/ +#else /* CONFIG_FEATURE_QUERY_MODULE_INTERFACE */ extern int lsmod_main(int argc, char **argv) { - int fd, i; - char line[128]; - printf("Module Size Used by"); check_tainted(); - fflush(stdout); - if ((fd = open("/proc/modules", O_RDONLY)) >= 0 ) { - while ((i = read(fd, line, sizeof(line))) > 0) { - write(fileno(stdout), line, i); - } - close(fd); - return 0; - } - perror_msg_and_die("/proc/modules"); + if(print_file_by_name("/proc/modules") == FALSE) return 1; + return 0; } -#endif /*CONFIG_FEATURE_OLD_MODULE_INTERFACE*/ +#endif /* CONFIG_FEATURE_QUERY_MODULE_INTERFACE */ |