Index: sys/vm/vm_map.c =================================================================== --- sys/vm/vm_map.c +++ sys/vm/vm_map.c @@ -3155,11 +3155,17 @@ * Unwire before removing addresses from the pmap; otherwise, * unwiring will put the entries back in the pmap. */ - if (entry->wired_count != 0) { + if (entry->wired_count != 0) vm_map_entry_unwire(map, entry); - } - pmap_remove(map->pmap, entry->start, entry->end); + /* + * Remove mappings for the pages, but only if the + * mappings could exist. For instance, it does not + * make sense to call pmap_remove() for guard entries. + */ + if ((entry->eflags & MAP_ENTRY_IS_SUB_MAP) != 0 || + entry->object.vm_object != NULL) + pmap_remove(map->pmap, entry->start, entry->end); /* * Delete the entry only after removing all pmap