From c4cc10da7ef6d65f0f654445e0af35b8309f16c2 Mon Sep 17 00:00:00 2001 From: Robert Morris Date: Fri, 6 Aug 2010 11:12:18 -0400 Subject: fix corner cases in exec of ELF put an invalid page below the stack have fork() handle invalid pages --- proc.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'proc.h') diff --git a/proc.h b/proc.h index 5e5d031..7d97dfa 100644 --- a/proc.h +++ b/proc.h @@ -16,7 +16,7 @@ // Contexts are stored at the bottom of the stack they // describe; the stack pointer is the address of the context. // The layout of the context matches the layout of the stack in swtch.S -// at "Switch stacks" comment. Switch itself doesn't save eip explicitly, +// at the "Switch stacks" comment. Switch doesn't save eip explicitly, // but it is on the stack and allocproc() manipulates it. struct context { uint edi; @@ -31,7 +31,7 @@ enum procstate { UNUSED, EMBRYO, SLEEPING, RUNNABLE, RUNNING, ZOMBIE }; // Per-process state struct proc { uint sz; // Size of process memory (bytes) - pde_t* pgdir; // linear address of proc's pgdir + pde_t* pgdir; // Linear address of proc's pgdir char *kstack; // Bottom of kernel stack for this process enum procstate state; // Process state volatile int pid; // Process ID @@ -48,6 +48,7 @@ struct proc { // Process memory is laid out contiguously, low addresses first: // text // original data and bss +// invalid page // fixed-size stack // expandable heap -- cgit v1.2.3