diff options
Diffstat (limited to 'vm/vm_user.c')
-rw-r--r-- | vm/vm_user.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/vm/vm_user.c b/vm/vm_user.c index 18f79eda..f42c84bf 100644 --- a/vm/vm_user.c +++ b/vm/vm_user.c @@ -608,19 +608,23 @@ kern_return_t vm_allocate_contiguous( if (pmax > VM_PAGE_DMA_LIMIT) #ifdef VM_PAGE_DMA32_LIMIT #if VM_PAGE_DMA32_LIMIT < VM_PAGE_DIRECTMAP_LIMIT - selector = VM_PAGE_SEL_DMA32; + if (pmax <= VM_PAGE_DMA32_LIMIT) + selector = VM_PAGE_SEL_DMA32; if (pmax > VM_PAGE_DMA32_LIMIT) #endif #endif - selector = VM_PAGE_SEL_DIRECTMAP; + if (pmax <= VM_PAGE_DIRECTMAP_LIMIT) + selector = VM_PAGE_SEL_DIRECTMAP; if (pmax > VM_PAGE_DIRECTMAP_LIMIT) #ifdef VM_PAGE_DMA32_LIMIT #if VM_PAGE_DMA32_LIMIT > VM_PAGE_DIRECTMAP_LIMIT - selector = VM_PAGE_SEL_DMA32; + if (pmax <= VM_PAGE_DMA32_LIMIT) + selector = VM_PAGE_SEL_DMA32; if (pmax > VM_PAGE_DMA32_LIMIT) #endif #endif - selector = VM_PAGE_SEL_HIGHMEM; + if (pmax <= VM_PAGE_HIGHMEM_LIMIT) + selector = VM_PAGE_SEL_HIGHMEM; size = vm_page_round(size); |