summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Braun <rbraun@sceen.net>2016-02-16 22:01:49 +0100
committerRichard Braun <rbraun@sceen.net>2016-02-16 22:03:56 +0100
commitf9ac76867be8c7f6943ca42d93521e5ad97e42a4 (patch)
treed7155af4d542f0772ae486a8536157f471022c97
parent4e48ff1d81e7a36d257c7d70b61fe1e5bf500a6e (diff)
Avoid panics on physical memory exhaustion
* vm/vm_resident (vm_page_grab): Return NULL instead of calling panic on memory exhaustion.
-rw-r--r--vm/vm_resident.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/vm/vm_resident.c b/vm/vm_resident.c
index cc7b8091..3d3a76de 100644
--- a/vm/vm_resident.c
+++ b/vm/vm_resident.c
@@ -784,8 +784,10 @@ vm_page_t vm_page_grab(
mem = vm_page_alloc_pa(0, VM_PAGE_SEL_DIRECTMAP, VM_PT_KERNEL);
- if (mem == NULL)
- panic("vm_page_grab");
+ if (mem == NULL) {
+ simple_unlock(&vm_page_queue_free_lock);
+ return NULL;
+ }
if (external)
vm_page_external_count++;