From 80f5e0483cf5d29e34851460d340663984d383ab Mon Sep 17 00:00:00 2001 From: Max Wash Date: Sun, 9 Apr 2023 16:38:08 +0100 Subject: [PATCH] sched: initialise kernel_thread parent ptr --- sched/task.c | 4 +++- sched/thread.c | 4 ++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/sched/task.c b/sched/task.c index 104226e..ce3c950 100644 --- a/sched/task.c +++ b/sched/task.c @@ -39,6 +39,7 @@ kern_status_t setup_kernel_task(void) kernel_thread->tr_id = 0; kernel_thread->tr_prio = PRIO_NORMAL; kernel_thread->tr_state = THREAD_READY; + kernel_thread->tr_parent = __kernel_task; unsigned long flags; task_lock_irqsave(__kernel_task, &flags); @@ -80,5 +81,6 @@ task_t *task_from_pid(unsigned int pid) task_t *current_task(void) { - return current_thread()->tr_parent; + thread_t *thr = current_thread(); + return thr ? thr->tr_parent : NULL; } diff --git a/sched/thread.c b/sched/thread.c index 79f6ba0..342c3c6 100644 --- a/sched/thread.c +++ b/sched/thread.c @@ -32,6 +32,10 @@ void thread_free(thread_t *thr) thread_t *current_thread(void) { cpu_data_t *cpu = get_this_cpu(); + if (!cpu) { + return NULL; + } + thread_t *out = cpu->c_current_thread; put_cpu(cpu); return out;