diff options
author | pjd <pjd@FreeBSD.org> | 2005-05-28 23:20:05 +0000 |
---|---|---|
committer | pjd <pjd@FreeBSD.org> | 2005-05-28 23:20:05 +0000 |
commit | 58d2b4c1934326f78f952f421b56521a36ed3026 (patch) | |
tree | c0f6d654bb754035290b22118a7fd29d6f2ffaff /sys/kern/kern_linker.c | |
parent | e9e82d146d7416249f21c19f4dc5324484a355e9 (diff) | |
download | FreeBSD-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.c | 8 |
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 |