summaryrefslogtreecommitdiffstats
path: root/sys/kern
diff options
context:
space:
mode:
authorimp <imp@FreeBSD.org>2000-01-10 08:00:58 +0000
committerimp <imp@FreeBSD.org>2000-01-10 08:00:58 +0000
commit92d6fa4fe7de6a4726dc99bd8638f451386b1049 (patch)
treea5a803635ba9f54881c871cea7bf483f2c6d4980 /sys/kern
parent719aa81c83eedcb07d06d3f7a47e741037776729 (diff)
downloadFreeBSD-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
Diffstat (limited to 'sys/kern')
-rw-r--r--sys/kern/kern_kthread.c5
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;
OpenPOWER on IntegriCloud