On Mon, Jan 08, 2001 at 10:40:12AM +0100, Carsten Langgaard wrote:
> When a new user process is started will its user space be cleared by the
> kernel or is there a potential leak from an older user process ?
A new process is started by the clone(2) or fork(2) syscalls. Module the
options that can be passed to clone(2) the two only create an identical copy
of the invoking process, so they're designed to leak information by design ;-)
execve(2) replaces the existing mappings with a new process image loaded
from files plus a newly created stack area. No old mappings survive, so
there in memory there is no information leak.
> What about the registers values, are they cleared for each new user
> application or will it simply contain the current value it got when the
> user application is started ?
We make no attempt at the integer registers for a new process, so some
information might be leaked in registers. All the callee saved registers
will be passed unchanged to the child process; the caller saved registers
except those that are used as syscall return values will return random
garbage. Floating point registers will be cleared with SNANs as soon
as the process is attempting to use a FPU for the first time, that is
we won't leak information via fpu registers.
(Ooops, we're not Orange Book B1 compliant, how sad ;-)
> How can you flush the data and instruction cashes from a user application ?
cacheflush(2). See man page.