Index: kern_linker.c =================================================================== RCS file: /home/ncvs/src/sys/kern/kern_linker.c,v retrieving revision 1.105 diff -u -r1.105 kern_linker.c --- kern_linker.c 3 Mar 2003 22:53:35 -0000 1.105 +++ kern_linker.c 2 Jun 2003 06:14:58 -0000 @@ -297,9 +297,11 @@ 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); } @@ -351,7 +353,12 @@ if (error != ENOENT) foundfile = 1; if (lf) { - linker_file_register_modules(lf); + error = linker_file_register_modules(lf); + if (error == EEXIST) { + (void) linker_file_unload(lf); + goto out; + } + linker_file_register_sysctls(lf); linker_file_sysinit(lf); lf->flags |= LINKER_FILE_LINKED; @@ -1668,7 +1675,7 @@ do { error = linker_load_file(pathname, &lfdep); if (error) - break; + goto out; if (modname && verinfo && modlist_lookup2(modname, verinfo) == NULL) { linker_file_unload(lfdep);