Clear excess parts of contexts when finalizing
authorBarret Rhoden <brho@cs.berkeley.edu>
Wed, 27 Jul 2016 23:28:28 +0000 (19:28 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Fri, 29 Jul 2016 21:43:07 +0000 (17:43 -0400)
commitaa7fa4f380acd9409f8ac8ace2cfc03b8a3aca94
tree5e7dac23cc008cf0dd6518e70ce83cad0cd3fb82
parent3adb611a34347bd66ded6e3422ac5442f6e6c607
Clear excess parts of contexts when finalizing

When we copy out the context from pcpui, we copy the entire struct
user_context.  However, when we fill the context, the amount we copy in
depends on the type.  Hypothetically, if a user has a smaller TF than
the previous resident, such as a SW TF running where a VM TF recently
existed, then the user could see some of the fields of the previous
resident.

By doing this during finalization, we limit the impact of the memset to
when we could give the context back to the user, i.e. after
finalization.

In the process, I moved the finalize routines from trap64.h to trap.c.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
kern/arch/x86/trap.c
kern/arch/x86/trap64.h