summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_linker.c
diff options
context:
space:
mode:
authorpjd <pjd@FreeBSD.org>2005-05-28 23:20:05 +0000
committerpjd <pjd@FreeBSD.org>2005-05-28 23:20:05 +0000
commit58d2b4c1934326f78f952f421b56521a36ed3026 (patch)
treec0f6d654bb754035290b22118a7fd29d6f2ffaff /sys/kern/kern_linker.c
parente9e82d146d7416249f21c19f4dc5324484a355e9 (diff)
downloadFreeBSD-src-58d2b4c1934326f78f952f421b56521a36ed3026.zip
FreeBSD-src-58d2b4c1934326f78f952f421b56521a36ed3026.tar.gz
Fix panic when module is compiled in and it is loaded from loader.conf.
Only panic is fixed, module will be still listed in kldstat(8) output. Not sure what is correct fix, because adding unloading code in case of failure to linker_init_kernel_modules() doesn't work.
Diffstat (limited to 'sys/kern/kern_linker.c')
-rw-r--r--sys/kern/kern_linker.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/sys/kern/kern_linker.c b/sys/kern/kern_linker.c
index 32cb32a..ac33ef0 100644
--- a/sys/kern/kern_linker.c
+++ b/sys/kern/kern_linker.c
@@ -275,7 +275,7 @@ linker_file_register_modules(linker_file_t lf)
{
struct mod_metadata **start, **stop, **mdp;
const moduledata_t *moddata;
- int error;
+ int first_error, error;
KLD_DPF(FILE, ("linker_file_register_modules: registering modules"
" in %s\n", lf->filename));
@@ -293,6 +293,7 @@ linker_file_register_modules(linker_file_t lf)
} else
return (0);
}
+ first_error = 0;
for (mdp = start; mdp < stop; mdp++) {
if ((*mdp)->md_type != MDT_MODULE)
continue;
@@ -303,10 +304,11 @@ linker_file_register_modules(linker_file_t lf)
if (error) {
printf("Module %s failed to register: %d\n",
moddata->name, error);
- return (error);
+ if (first_error == 0)
+ first_error = error;
}
}
- return (0);
+ return (first_error);
}
static void
OpenPOWER on IntegriCloud