Fixes sys_change_to memory clobber
authorBarret Rhoden <brho@cs.berkeley.edu>
Thu, 11 Oct 2012 00:32:18 +0000 (17:32 -0700)
committerBarret Rhoden <brho@cs.berkeley.edu>
Tue, 16 Oct 2012 21:42:20 +0000 (14:42 -0700)
commit93ccf065dea14428f6b779767034027ac24ff501
treec7f304301fe0d183d9b9481064c4c8f5efe05d8e
parent21b6a673f95ea8d4fa20bb60940849edf605f9d6
Fixes sys_change_to memory clobber

This was previously fixed in the kernel in 67e1cce, and then screwed up
recently in d9513a4.

Fixing it in the kernel is a bad way to go, so this fixes it in
userspace.  The core issue is userspace asks the kernel to do something
to basically 'free' memory (reset the VC ctx to the top of stack), and
that memory is being used by the kernel to report the syscall.  It's
somewhat equivalent to mmapping a page, putting a struct syscall on it,
then using that to request munmapping that page, and then being
surprised when something bad happens to you (we actually don't handle
this well yet).
user/parlib/include/vcore.h
user/parlib/syscall.c
user/parlib/vcore.c