diff options
author | Maksym Planeta <mcsim.planeta@gmail.com> | 2013-03-06 03:12:22 +0100 |
---|---|---|
committer | Maksym Planeta <mcsim.planeta@gmail.com> | 2013-03-06 03:12:22 +0100 |
commit | d850c189d311657bdba9253e91102898e2f6267e (patch) | |
tree | 4565e30153b9e5151597de5cac0b3a372004e9b7 /vm | |
parent | 883073e30fbb07de6775c0a941abcf6d22f1919c (diff) |
Fix possible bugs for normal and sequential policies when values for readahead were choosen not very sane
Diffstat (limited to 'vm')
-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; |