From d850c189d311657bdba9253e91102898e2f6267e Mon Sep 17 00:00:00 2001 From: Maksym Planeta Date: Wed, 6 Mar 2013 03:12:22 +0100 Subject: Fix possible bugs for normal and sequential policies when values for readahead were choosen not very sane --- vm/vm_fault.c | 7 +++++-- 1 file 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; -- cgit v1.2.3