summaryrefslogtreecommitdiff
path: root/kernel/vm.c
diff options
context:
space:
mode:
authorRobert Morris <[email protected]>2020-08-13 10:22:07 -0400
committerFrans Kaashoek <[email protected]>2020-08-17 08:18:23 -0400
commit8dc71a257d80d1e2f56cd7f931ca389fbb727b5c (patch)
treeb29e38cd1aab2cb526dd657ba23d636a93401580 /kernel/vm.c
parentbc51626aab45f420652f20948a1ffa5398ad9446 (diff)
downloadxv6-labs-8dc71a257d80d1e2f56cd7f931ca389fbb727b5c.tar.gz
xv6-labs-8dc71a257d80d1e2f56cd7f931ca389fbb727b5c.tar.bz2
xv6-labs-8dc71a257d80d1e2f56cd7f931ca389fbb727b5c.zip
handle another out-of-memory in fork(). the policy here is not consistent,
since other calls (e.g. exec()) panic on out of memory.
Diffstat (limited to 'kernel/vm.c')
-rw-r--r--kernel/vm.c3
1 files changed, 2 insertions, 1 deletions
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;
}