summaryrefslogtreecommitdiffstats
path: root/sys/uvm/uvm_unix.c
diff options
context:
space:
mode:
authorart <art@openbsd.org>2002-10-29 18:30:21 +0000
committerart <art@openbsd.org>2002-10-29 18:30:21 +0000
commit93cbfefa847e712438e489eed16a4a5aa0e721e9 (patch)
tree384c5ada353ead0b220db134e622a4e263e371ba /sys/uvm/uvm_unix.c
parentdanger will robinson, danger (diff)
downloadwireguard-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.c35
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);
}
/*