diff options
| author | 2002-10-29 18:30:21 +0000 | |
|---|---|---|
| committer | 2002-10-29 18:30:21 +0000 | |
| commit | 93cbfefa847e712438e489eed16a4a5aa0e721e9 (patch) | |
| tree | 384c5ada353ead0b220db134e622a4e263e371ba /sys/uvm/uvm_unix.c | |
| parent | danger will robinson, danger (diff) | |
| download | wireguard-openbsd-93cbfefa847e712438e489eed16a4a5aa0e721e9.tar.xz wireguard-openbsd-93cbfefa847e712438e489eed16a4a5aa0e721e9.zip | |
Since memory deallocation can't fail, remove the error return from
uvm_unmap, uvm_deallocate and a few other functions.
Simplifies some code and reduces diff to the UBC branch.
Diffstat (limited to 'sys/uvm/uvm_unix.c')
| -rw-r--r-- | sys/uvm/uvm_unix.c | 35 |
1 files changed, 15 insertions, 20 deletions
diff --git a/sys/uvm/uvm_unix.c b/sys/uvm/uvm_unix.c index 6bed872378d..fa1a212f406 100644 --- a/sys/uvm/uvm_unix.c +++ b/sys/uvm/uvm_unix.c @@ -1,4 +1,4 @@ -/* $OpenBSD: uvm_unix.c,v 1.21 2002/08/23 11:26:57 art Exp $ */ +/* $OpenBSD: uvm_unix.c,v 1.22 2002/10/29 18:30:21 art Exp $ */ /* $NetBSD: uvm_unix.c,v 1.18 2000/09/13 15:00:25 thorpej Exp $ */ /* @@ -77,8 +77,7 @@ sys_obreak(p, v, retval) } */ *uap = v; struct vmspace *vm = p->p_vmspace; vaddr_t new, old; - ssize_t diff; - int rv; + int error; old = (vaddr_t)vm->vm_daddr; new = round_page((vaddr_t)SCARG(uap, nsize)); @@ -86,35 +85,31 @@ sys_obreak(p, v, retval) return (ENOMEM); old = round_page(old + ptoa(vm->vm_dsize)); - diff = new - old; - if (diff == 0) + if (new == old) return (0); /* * grow or shrink? */ - if (diff > 0) { - rv = uvm_map(&vm->vm_map, &old, diff, NULL, UVM_UNKNOWN_OFFSET, - 0, UVM_MAPFLAG(UVM_PROT_RW, UVM_PROT_RWX, UVM_INH_COPY, + if (new > old) { + error = uvm_map(&vm->vm_map, &old, new - old, NULL, + UVM_UNKNOWN_OFFSET, 0, + UVM_MAPFLAG(UVM_PROT_RW, UVM_PROT_RWX, UVM_INH_COPY, UVM_ADV_NORMAL, UVM_FLAG_AMAPPAD|UVM_FLAG_FIXED| UVM_FLAG_OVERLAY|UVM_FLAG_COPYONW)); - if (rv == KERN_SUCCESS) { - vm->vm_dsize += atop(diff); - return (0); + if (error) { + uprintf("sbrk: grow %ld failed, error = %d\n", + new - old, error); + return (ENOMEM); } + vm->vm_dsize += atop(new - old); } else { - rv = uvm_deallocate(&vm->vm_map, new, -diff); - if (rv == KERN_SUCCESS) { - vm->vm_dsize -= atop(-diff); - return (0); - } + uvm_deallocate(&vm->vm_map, new, old - new); + vm->vm_dsize -= atop(old - new); } - uprintf("sbrk: %s %ld failed, return = %d\n", - diff > 0 ? "grow" : "shrink", - (long)(diff > 0 ? diff : -diff), rv); - return (ENOMEM); + return (0); } /* |
