summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaksym Planeta <mcsim.planeta@gmail.com>2013-03-06 03:12:22 +0100
committerMaksym Planeta <mcsim.planeta@gmail.com>2013-03-06 03:12:22 +0100
commitd850c189d311657bdba9253e91102898e2f6267e (patch)
tree4565e30153b9e5151597de5cac0b3a372004e9b7
parent883073e30fbb07de6775c0a941abcf6d22f1919c (diff)
Fix possible bugs for normal and sequential policies when values for readahead were choosen not very sane
-rw-r--r--vm/vm_fault.c7
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;