Index: vm_glue.c =================================================================== RCS file: /home/ncvs/src/sys/vm/vm_glue.c,v retrieving revision 1.141 diff -c -p -r1.141 vm_glue.c *** vm_glue.c 7 Jul 2002 23:05:27 -0000 1.141 --- vm_glue.c 7 Jul 2002 23:15:59 -0000 *************** vm_proc_dispose(struct proc *p) *** 266,279 **** upobj = p->p_upages_obj; up = (vm_offset_t)p->p_uarea; ! for (i = 0; i < UAREA_PAGES; i++) { ! m = vm_page_lookup(upobj, i); ! if (m == NULL) ! panic("vm_proc_dispose: upage already missing?"); vm_page_busy(m); vm_page_unwire(m, 0); vm_page_free(m); } pmap_qremove(up, UAREA_PAGES); kmem_free(kernel_map, up, UAREA_PAGES * PAGE_SIZE); p->p_upages_obj = NULL; --- 266,280 ---- upobj = p->p_upages_obj; up = (vm_offset_t)p->p_uarea; ! i = 0; ! while ((m = TAILQ_FIRST(&upobj->memq)) != NULL) { vm_page_busy(m); vm_page_unwire(m, 0); vm_page_free(m); + i++; } + if (i != UAREA_PAGES) + panic("vm_proc_dispose: incorrect number of pages in upobj"); pmap_qremove(up, UAREA_PAGES); kmem_free(kernel_map, up, UAREA_PAGES * PAGE_SIZE); p->p_upages_obj = NULL; *************** vm_proc_swapout(struct proc *p) *** 294,306 **** upobj = p->p_upages_obj; up = (vm_offset_t)p->p_uarea; ! for (i = 0; i < UAREA_PAGES; i++) { ! m = vm_page_lookup(upobj, i); ! if (m == NULL) ! panic("vm_proc_swapout: upage already missing?"); vm_page_dirty(m); vm_page_unwire(m, 0); } pmap_qremove(up, UAREA_PAGES); } --- 295,308 ---- upobj = p->p_upages_obj; up = (vm_offset_t)p->p_uarea; ! i = 0; ! TAILQ_FOREACH(m, &upobj->memq, listq) { vm_page_dirty(m); vm_page_unwire(m, 0); + i++; } + if (i != UAREA_PAGES) + panic("vm_proc_swapout: incorrect number of pages in upobj"); pmap_qremove(up, UAREA_PAGES); }