diff options
author | imp <imp@FreeBSD.org> | 2000-01-10 08:00:58 +0000 |
---|---|---|
committer | imp <imp@FreeBSD.org> | 2000-01-10 08:00:58 +0000 |
commit | 92d6fa4fe7de6a4726dc99bd8638f451386b1049 (patch) | |
tree | a5a803635ba9f54881c871cea7bf483f2c6d4980 | |
parent | 719aa81c83eedcb07d06d3f7a47e741037776729 (diff) | |
download | FreeBSD-src-92d6fa4fe7de6a4726dc99bd8638f451386b1049.zip FreeBSD-src-92d6fa4fe7de6a4726dc99bd8638f451386b1049.tar.gz |
Panic if proc0 hasn't been created and we try to call kthread_create.
This prevents a more mysterious crash later.
XXX The long term solution is defer creation of these things until
XXX proc0 lives
-rw-r--r-- | sys/kern/kern_kthread.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/sys/kern/kern_kthread.c b/sys/kern/kern_kthread.c index 5efe90c..1f805e7 100644 --- a/sys/kern/kern_kthread.c +++ b/sys/kern/kern_kthread.c @@ -30,6 +30,7 @@ #include <sys/systm.h> #include <sys/proc.h> #include <sys/kthread.h> +#include <sys/resourcevar.h> #include <sys/signalvar.h> #include <sys/unistd.h> #include <sys/wait.h> @@ -68,6 +69,10 @@ kthread_create(void (*func)(void *), void *arg, va_list ap; struct proc *p2; + if (!proc0.p_stats || proc0.p_stats->p_start.tv_sec == 0) { + panic("kthread_create called too soon"); + } + error = fork1(&proc0, RFMEM | RFFDG | RFPROC, &p2); if (error) return error; |