summaryrefslogtreecommitdiffstats
path: root/lib/libc/string/memset.c
diff options
context:
space:
mode:
authoralc <alc@FreeBSD.org>2010-10-04 16:49:40 +0000
committeralc <alc@FreeBSD.org>2010-10-04 16:49:40 +0000
commitb0606e2f168c4625960b95c7a9b0e6d6c278faa2 (patch)
tree2c98870dcc5c73356645845656f267b9e238f9a7 /lib/libc/string/memset.c
parent09583f57805b64642c59c88c3b2049090f307df7 (diff)
downloadFreeBSD-src-b0606e2f168c4625960b95c7a9b0e6d6c278faa2.zip
FreeBSD-src-b0606e2f168c4625960b95c7a9b0e6d6c278faa2.tar.gz
If vm_map_find() is asked to allocate a superpage-aligned region of virtual
addresses that is greater than a superpage in size but not a multiple of the superpage size, then vm_map_find() is not always expanding the kernel pmap to support the last few small pages being allocated. These failures are not commonplace, so this was first noticed by someone porting FreeBSD to a new architecture. Previously, we grew the kernel page table in vm_map_findspace() when we found the first available virtual address. This works most of the time because we always grow the kernel pmap or page table by an amount that is a multiple of the superpage size. Now, instead, we defer the call to pmap_growkernel() until we are committed to a range of virtual addresses in vm_map_insert(). In general, there is another reason to prefer calling pmap_growkernel() in vm_map_insert(). It makes it possible for someone to do the equivalent of an mmap(MAP_FIXED) on the kernel map. Reported by: Svatopluk Kraus Reviewed by: kib@ MFC after: 3 weeks
Diffstat (limited to 'lib/libc/string/memset.c')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud