diff options
-rw-r--r-- | usr/src/uts/i86pc/io/vmm/vmm.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/usr/src/uts/i86pc/io/vmm/vmm.c b/usr/src/uts/i86pc/io/vmm/vmm.c index 2370da62d2..0f722facb0 100644 --- a/usr/src/uts/i86pc/io/vmm/vmm.c +++ b/usr/src/uts/i86pc/io/vmm/vmm.c @@ -760,12 +760,21 @@ vm_alloc_memseg(struct vm *vm, int ident, size_t len, bool sysmem) struct mem_seg *seg; vm_object_t obj; +#ifndef __FreeBSD__ + extern pgcnt_t get_max_page_get(void); +#endif + if (ident < 0 || ident >= VM_MAX_MEMSEGS) return (EINVAL); if (len == 0 || (len & PAGE_MASK)) return (EINVAL); +#ifndef __FreeBSD__ + if (len > ptob(get_max_page_get())) + return (EINVAL); +#endif + seg = &vm->mem_segs[ident]; if (seg->object != NULL) { if (seg->len == len && seg->sysmem == sysmem) |