From 5aba22e3c66bb1fa5925e7ce976f436a48ec16b7 Mon Sep 17 00:00:00 2001 From: Justus Winter Date: Mon, 14 Aug 2017 19:17:45 +0200 Subject: vm: Improve error handling. * vm/vm_map.c (vm_map_create): Gracefully handle resource exhaustion. (vm_map_fork): Likewise at the callsite. --- vm/vm_map.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'vm/vm_map.c') diff --git a/vm/vm_map.c b/vm/vm_map.c index ee443e12..2f687fa3 100644 --- a/vm/vm_map.c +++ b/vm/vm_map.c @@ -216,7 +216,7 @@ vm_map_t vm_map_create( result = (vm_map_t) kmem_cache_alloc(&vm_map_cache); if (result == VM_MAP_NULL) - panic("vm_map_create"); + return VM_MAP_NULL; vm_map_setup(result, pmap, min, max); @@ -4245,6 +4245,10 @@ vm_map_t vm_map_fork(vm_map_t old_map) new_map = vm_map_create(new_pmap, old_map->min_offset, old_map->max_offset); + if (new_pmap == PMAP_NULL) { + pmap_destroy(new_pmap); + return VM_MAP_NULL; + } for ( old_entry = vm_map_first_entry(old_map); -- cgit v1.2.3