diff options
author | dfr <dfr@FreeBSD.org> | 1999-01-25 08:42:24 +0000 |
---|---|---|
committer | dfr <dfr@FreeBSD.org> | 1999-01-25 08:42:24 +0000 |
commit | d58f08f33fcaeae672848d0b3824d05303a50b81 (patch) | |
tree | 8f3fd371edf337752b5612724f44e12b1a16f3c5 /sys/kern/kern_linker.c | |
parent | 924db72bc603c361cd9ee1dd36e5d5c83aa2a900 (diff) | |
download | FreeBSD-src-d58f08f33fcaeae672848d0b3824d05303a50b81.zip FreeBSD-src-d58f08f33fcaeae672848d0b3824d05303a50b81.tar.gz |
Don't try to call SYSUNINIT functions if there was a link error.
Reviewed by: Peter Wemm <peter@netplex.com.au>
Diffstat (limited to 'sys/kern/kern_linker.c')
-rw-r--r-- | sys/kern/kern_linker.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/sys/kern/kern_linker.c b/sys/kern/kern_linker.c index 3f69c05..2cd5142 100644 --- a/sys/kern/kern_linker.c +++ b/sys/kern/kern_linker.c @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: kern_linker.c,v 1.21 1999/01/19 22:26:46 peter Exp $ + * $Id: kern_linker.c,v 1.22 1999/01/23 03:45:22 peter Exp $ */ #include "opt_ddb.h" @@ -355,6 +355,7 @@ linker_make_file(const char* pathname, void* priv, struct linker_file_ops* ops) lf->refs = 1; lf->userrefs = 0; + lf->flags = 0; lf->filename = (char*) (lf + 1); strcpy(lf->filename, filename); lf->id = next_file_id++; @@ -410,7 +411,9 @@ linker_file_unload(linker_file_t file) goto out; } - linker_file_sysuninit(file); + /* Don't try to run SYSUNINITs if we are unloaded due to a link error */ + if (file->flags & LINKER_FILE_LINKED) + linker_file_sysuninit(file); TAILQ_REMOVE(&files, file, link); lockmgr(&lock, LK_RELEASE, 0, curproc); |