diff options
author | Pawel Jakub Dawidek <pjd@FreeBSD.org> | 2005-05-28 22:29:44 +0000 |
---|---|---|
committer | Pawel Jakub Dawidek <pjd@FreeBSD.org> | 2005-05-28 22:29:44 +0000 |
commit | 870fba26488b779a2871042633df784bb4a8f89f (patch) | |
tree | 20473695d44130d20818bc62bee4d46b149e7263 | |
parent | f6f1669c0f1b968c1c667026ac9067c4147cdcfe (diff) |
Notes
-rw-r--r-- | sys/kern/kern_linker.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/sys/kern/kern_linker.c b/sys/kern/kern_linker.c index 53479e181dc8..32cb32ac5b52 100644 --- a/sys/kern/kern_linker.c +++ b/sys/kern/kern_linker.c @@ -300,9 +300,11 @@ linker_file_register_modules(linker_file_t lf) KLD_DPF(FILE, ("Registering module %s in %s\n", moddata->name, lf->filename)); error = module_register(moddata, lf); - if (error) + if (error) { printf("Module %s failed to register: %d\n", moddata->name, error); + return (error); + } } return (0); } @@ -354,7 +356,11 @@ linker_load_file(const char *filename, linker_file_t *result) if (error != ENOENT) foundfile = 1; if (lf) { - linker_file_register_modules(lf); + error = linker_file_register_modules(lf); + if (error == EEXIST) { + linker_file_unload(lf, LINKER_UNLOAD_FORCE); + goto out; + } linker_file_register_sysctls(lf); linker_file_sysinit(lf); lf->flags |= LINKER_FILE_LINKED; |