summaryrefslogtreecommitdiff
path: root/insmod.c
diff options
context:
space:
mode:
authorEric Andersen2001-01-24 23:59:50 +0000
committerEric Andersen2001-01-24 23:59:50 +0000
commit86f3d5bad6ec3280d247c0484f90ed78e35e32c3 (patch)
treef05c1c845b6a27d93e10761684f182024c046848 /insmod.c
parent54e9457920733c523f2983d106ca0f10ace05221 (diff)
downloadbusybox-86f3d5bad6ec3280d247c0484f90ed78e35e32c3.zip
busybox-86f3d5bad6ec3280d247c0484f90ed78e35e32c3.tar.gz
Bug fix and small create_module cleanup from Larry Doolittle to
fix insmod, since I broke var=value args when I getopt'ified it.
Diffstat (limited to 'insmod.c')
-rw-r--r--insmod.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/insmod.c b/insmod.c
index e52da91..fc49dcd 100644
--- a/insmod.c
+++ b/insmod.c
@@ -78,7 +78,7 @@
#ifndef MODUTILS_MODULE_H
static const int MODUTILS_MODULE_H = 1;
-#ident "$Id: insmod.c,v 1.38 2001/01/24 23:34:48 andersen Exp $"
+#ident "$Id: insmod.c,v 1.39 2001/01/24 23:59:50 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
@@ -284,7 +284,7 @@ int delete_module(const char *);
#ifndef MODUTILS_OBJ_H
static const int MODUTILS_OBJ_H = 1;
-#ident "$Id: insmod.c,v 1.38 2001/01/24 23:34:48 andersen Exp $"
+#ident "$Id: insmod.c,v 1.39 2001/01/24 23:59:50 andersen Exp $"
/* The relocatable object is manipulated using elfin types. */
@@ -3039,6 +3039,9 @@ extern int insmod_main( int argc, char **argv)
}
obj_allocate_commons(f);
+ /* done with the module name, on to the optional var=value arguments */
+ ++optind;
+
if (optind < argc) {
if (m_has_modinfo
? !new_process_module_arguments(f, argc - optind, argv + optind)
@@ -3058,11 +3061,8 @@ extern int insmod_main( int argc, char **argv)
m_size = obj_load_size(f);
- errno = 0;
m_addr = create_module(m_name, m_size);
- switch (errno) {
- case 0:
- break;
+ if (m_addr==-1) switch (errno) {
case EEXIST:
error_msg("A module named %s already exists\n", m_name);
goto out;