Fix assumption of current != NULL
authorBarret Rhoden <brho@cs.berkeley.edu>
Thu, 25 Oct 2018 13:13:37 +0000 (09:13 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Thu, 25 Oct 2018 13:13:37 +0000 (09:13 -0400)
commit69ad136d9e7c0454af2158c0967bf8c39b986c90
tree62dad6025e4c2867c391ead7d071c6d94727c860
parentc62a28c7897607e839d87620da21410a96615f39
Fix assumption of current != NULL

This goes back to the root cause of commit 38346732733e ("Clear current
before calling proc_decref()").  We needed to clear current back when we
abandon_core().  However, the kthread still thought it needed to save
the address space / context of the process and would try to incref a
NULL pointer.

The root issue is that the kthread was a process kthread, but it lost
its connection to the process during the execution of a syscall (or
trap).  The syscall doesn't even need to be the one that did the
killing.  We just needed to be a non-ktask/RKM.

We could also change up the way the kthread flags work, but I wanted to
highlight the existence of this bug.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
kern/src/kthread.c