aboutsummaryrefslogtreecommitdiffstats
path: root/prog/alloc.go
diff options
context:
space:
mode:
Diffstat (limited to 'prog/alloc.go')
-rw-r--r--prog/alloc.go10
1 files changed, 2 insertions, 8 deletions
diff --git a/prog/alloc.go b/prog/alloc.go
index a4b7b7f1f..0af8c5bde 100644
--- a/prog/alloc.go
+++ b/prog/alloc.go
@@ -151,15 +151,9 @@ func (va *vmaAlloc) alloc(r *randGen, size uint64) uint64 {
} else {
page = va.used[r.rand(len(va.used))]
if size > 1 && r.bin() {
- off := r.rand(int(size))
- if off > page {
- off = page
- }
- page -= off
- }
- if page+size > va.numPages {
- page = va.numPages - size
+ page -= min(r.rand(int(size)), page)
}
+ page = min(page, va.numPages-size)
}
if page >= va.numPages || size > va.numPages || page+size > va.numPages {
panic(fmt.Sprintf("vmaAlloc: bad page=%v size=%v numPages=%v", page, size, va.numPages))