diff options
author | royger <royger@FreeBSD.org> | 2014-08-05 10:29:01 +0000 |
---|---|---|
committer | royger <royger@FreeBSD.org> | 2014-08-05 10:29:01 +0000 |
commit | b86acea372543107bfcfb54ced21df5c7326724e (patch) | |
tree | ad3ccd83d22cd1f596df6aaa1ffdc9c8f27ac5e0 /lib/libgssapi/gss_verify.c | |
parent | a519d2b31aa4dff293e05ed116b1ce8b620e500f (diff) | |
download | FreeBSD-src-b86acea372543107bfcfb54ced21df5c7326724e.zip FreeBSD-src-b86acea372543107bfcfb54ced21df5c7326724e.tar.gz |
vm_phys: improve robustness of fictitious ranges
With the current implementation of managed fictitious ranges when
also using VM_PHYSSEG_DENSE, a user could try to register a
fictitious range that starts inside of vm_page_array, but then
overrruns it (because the end of the fictitious range is greater than
vm_page_array_size + first_page). This would result in PHYS_TO_VM_PAGE
returning unallocated pages from past the end of vm_page_array. The
same could happen if a user tried to register a segment that starts
outside of vm_page_array but ends inside of it.
In order to fix this, allow vm_phys_fictitious_{reg/unreg}_range to
use a set of pages from vm_page_array, and allocate the rest.
Sponsored by: Citrix Systems R&D
Reviewed by: kib, alc
vm/vm_phys.c:
- Allow registering/unregistering fictitious ranges that overrun
vm_page_array.
Diffstat (limited to 'lib/libgssapi/gss_verify.c')
0 files changed, 0 insertions, 0 deletions