diff options
Diffstat (limited to 'vm/vm_fault.c')
-rw-r--r-- | vm/vm_fault.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/vm/vm_fault.c b/vm/vm_fault.c index 5a6d5c64..5b61cbd1 100644 --- a/vm/vm_fault.c +++ b/vm/vm_fault.c @@ -427,8 +427,11 @@ vm_calculate_clusters (vm_object_t object, vm_offset_t offset, switch (advice) { case VM_ADVICE_DEFAULT: case VM_ADVICE_RANDOM: - if (first_after - first_before > max_size) - first_after = first_before + max_size; + if (first_after - first_before > max_size) { + /* Guarantee that page where was fault will be in range */ + first_after = max(first_before + max_size, offset + PAGE_SIZE); + first_before = first_after - max_size; + } *in_start = first_before; *in_end = first_after; |