summaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'kernel')
-rw-r--r--kernel/proc.c2
-rw-r--r--kernel/vm.c3
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;
}