diff options
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/proc.c | 2 | ||||
-rw-r--r-- | kernel/vm.c | 3 |
2 files changed, 4 insertions, 1 deletions
diff --git a/kernel/proc.c b/kernel/proc.c index 2811142..56314e5 100644 --- a/kernel/proc.c +++ b/kernel/proc.c @@ -161,6 +161,8 @@ proc_pagetable(struct proc *p) // An empty page table. pagetable = uvmcreate(); + if(pagetable == 0) + return 0; // map the trampoline code (for system call return) // at the highest user virtual address. diff --git a/kernel/vm.c b/kernel/vm.c index 92a5ff7..2f3789f 100644 --- a/kernel/vm.c +++ b/kernel/vm.c @@ -195,13 +195,14 @@ uvmunmap(pagetable_t pagetable, uint64 va, uint64 npages, int do_free) } // create an empty user page table. +// returns 0 if out of memory. pagetable_t uvmcreate() { pagetable_t pagetable; pagetable = (pagetable_t) kalloc(); if(pagetable == 0) - panic("uvmcreate: out of memory"); + return 0; memset(pagetable, 0, PGSIZE); return pagetable; } |