diff options
author | Richard Braun <rbraun@sceen.net> | 2016-02-16 22:01:49 +0100 |
---|---|---|
committer | Richard Braun <rbraun@sceen.net> | 2016-02-16 22:03:56 +0100 |
commit | f9ac76867be8c7f6943ca42d93521e5ad97e42a4 (patch) | |
tree | d7155af4d542f0772ae486a8536157f471022c97 /vm | |
parent | 4e48ff1d81e7a36d257c7d70b61fe1e5bf500a6e (diff) | |
download | gnumach-f9ac76867be8c7f6943ca42d93521e5ad97e42a4.tar.gz gnumach-f9ac76867be8c7f6943ca42d93521e5ad97e42a4.tar.bz2 gnumach-f9ac76867be8c7f6943ca42d93521e5ad97e42a4.zip |
Avoid panics on physical memory exhaustion
* vm/vm_resident (vm_page_grab): Return NULL instead of calling panic
on memory exhaustion.
Diffstat (limited to 'vm')
-rw-r--r-- | vm/vm_resident.c | 6 |
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++; |