diff --git a/sys/vm/vm_phys.c b/sys/vm/vm_phys.c --- a/sys/vm/vm_phys.c +++ b/sys/vm/vm_phys.c @@ -711,12 +711,16 @@ #ifdef VM_FREEPOOL_LAZYINIT if (__predict_false(m->pool == VM_FREEPOOL_LAZYINIT)) { vm_page_t m_next; + vm_paddr_t pa; int npages; npages = 1 << order; m_next = m + npages; - vm_page_init_page(m_next, m->phys_addr + ptoa(npages), m->segind, - VM_FREEPOOL_LAZYINIT); + pa = m->phys_addr + ptoa(npages); + if (pa < vm_phys_segs[m->segind].end) { + vm_page_init_page(m_next, pa, m->segind, + VM_FREEPOOL_LAZYINIT); + } } #endif }