diff options
author | kib <kib@FreeBSD.org> | 2017-07-10 07:12:59 +0000 |
---|---|---|
committer | kib <kib@FreeBSD.org> | 2017-07-10 07:12:59 +0000 |
commit | f65f87b2896bf5d593828974726c22a48ecac021 (patch) | |
tree | 559df62b572d0aed68da0ecdfed91c59df267893 | |
parent | f55bb1740b734ed9db48ca453873463a6c9e1733 (diff) | |
download | FreeBSD-src-f65f87b2896bf5d593828974726c22a48ecac021.zip FreeBSD-src-f65f87b2896bf5d593828974726c22a48ecac021.tar.gz |
MFC r320619 MFS r320863:
Resolve confusion between different error code spaces.
Approved by: re (delphij)
-rw-r--r-- | sys/kern/kern_exec.c | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/sys/kern/kern_exec.c b/sys/kern/kern_exec.c index 1a41aac..43dd481 100644 --- a/sys/kern/kern_exec.c +++ b/sys/kern/kern_exec.c @@ -1055,9 +1055,9 @@ exec_unmap_first_page(imgp) } /* - * Destroy old address space, and allocate a new stack - * The new stack is only SGROWSIZ large because it is grown - * automatically in trap.c. + * Destroy old address space, and allocate a new stack. + * The new stack is only sgrowsiz large because it is grown + * automatically on a page fault. */ int exec_new_vmspace(imgp, sv) @@ -1111,9 +1111,9 @@ exec_new_vmspace(imgp, sv) VM_PROT_READ | VM_PROT_EXECUTE, VM_PROT_READ | VM_PROT_EXECUTE, MAP_INHERIT_SHARE | MAP_ACC_NO_CHARGE); - if (error) { + if (error != KERN_SUCCESS) { vm_object_deallocate(obj); - return (error); + return (vm_mmap_to_errno(error)); } } @@ -1137,10 +1137,9 @@ exec_new_vmspace(imgp, sv) stack_addr = sv->sv_usrstack - ssiz; error = vm_map_stack(map, stack_addr, (vm_size_t)ssiz, obj != NULL && imgp->stack_prot != 0 ? imgp->stack_prot : - sv->sv_stackprot, - VM_PROT_ALL, MAP_STACK_GROWS_DOWN); - if (error) - return (error); + sv->sv_stackprot, VM_PROT_ALL, MAP_STACK_GROWS_DOWN); + if (error != KERN_SUCCESS) + return (vm_mmap_to_errno(error)); /* * vm_ssize and vm_maxsaddr are somewhat antiquated concepts, but they |