Fix up user memory accesses during syscall aborts
authorBarret Rhoden <brho@cs.berkeley.edu>
Tue, 8 Dec 2015 20:40:05 +0000 (15:40 -0500)
committerBarret Rhoden <brho@cs.berkeley.edu>
Thu, 10 Dec 2015 16:26:40 +0000 (11:26 -0500)
commit027786f774f2171393523f907956003fd0e22654
treeee4a7c16c1920b1298e42b48c59387ffe7f118b8
parentfca71e8b6007d2c99e25cd7e5f9d4f8378f2d3ae
Fix up user memory accesses during syscall aborts

Syscall aborting peaks at the syscall, which is usually in user memory.
There are a couple different ways we can deal with it.  In some cases, such
as the atomic_or of the sysc->flag, we need to use waserror to catch it.

For other situations, we can do whatever we want.  I used copy_from_user(),
somewhat for the heck of it, and in part because I didn't want
__abort_all_sysc() to throw, yet.

I stumbled on this issue when looking at switch_to and which locks are held
when accessing user memory.  A few other panics led me here as well.  =)

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