svn commit: r265100 - head/sys/vm
Konstantin Belousov
kib at FreeBSD.org
Tue Apr 29 18:42:38 UTC 2014
Author: kib
Date: Tue Apr 29 18:42:37 2014
New Revision: 265100
URL: http://svnweb.freebsd.org/changeset/base/265100
Log:
For the VM_PHYSSEG_DENSE case, checking the requested range to fall
into the area backed by vm_page_array wrongly compared end with
vm_page_array_size. It should be adjusted by first_page index to be
correct.
Also, the corner and incorrect case of the requested range extending
after the end of the vm_page_array was incorrectly handled by
allocating the segment.
Fix the comparision for the end of range and return EINVAL if the end
extends beyond vm_page_array.
Discussed with: royger
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Modified:
head/sys/vm/vm_phys.c
Modified: head/sys/vm/vm_phys.c
==============================================================================
--- head/sys/vm/vm_phys.c Tue Apr 29 17:48:57 2014 (r265099)
+++ head/sys/vm/vm_phys.c Tue Apr 29 18:42:37 2014 (r265100)
@@ -551,7 +551,9 @@ vm_phys_fictitious_reg_range(vm_paddr_t
#ifdef VM_PHYSSEG_DENSE
pi = atop(start);
- if (pi >= first_page && atop(end) < vm_page_array_size) {
+ if (pi >= first_page && pi < vm_page_array_size + first_page) {
+ if (atop(end) >= vm_page_array_size + first_page)
+ return (EINVAL);
fp = &vm_page_array[pi - first_page];
malloced = FALSE;
} else
More information about the svn-src-all
mailing list