From cefb6e866572048efc220d3cfaf4be91bf7de6b9 Mon Sep 17 00:00:00 2001 From: alc Date: Thu, 15 Jul 2004 03:20:00 +0000 Subject: A loop in pmap_remove() should use TAILQ_FOREACH_SAFE(), not TAILQ_FOREACH(), because the loop deletes elements from the list. Reviewed by: marcel@ --- sys/ia64/ia64/pmap.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'sys/ia64') diff --git a/sys/ia64/ia64/pmap.c b/sys/ia64/ia64/pmap.c index 6d52c72..4e869f0 100644 --- a/sys/ia64/ia64/pmap.c +++ b/sys/ia64/ia64/pmap.c @@ -1331,7 +1331,7 @@ pmap_remove(pmap_t pmap, vm_offset_t sva, vm_offset_t eva) { pmap_t oldpmap; vm_offset_t va; - pv_entry_t pv; + pv_entry_t npv, pv; struct ia64_lpte *pte; if (pmap == NULL) @@ -1354,7 +1354,7 @@ pmap_remove(pmap_t pmap, vm_offset_t sva, vm_offset_t eva) } if (pmap->pm_stats.resident_count < ((eva - sva) >> PAGE_SHIFT)) { - TAILQ_FOREACH(pv, &pmap->pm_pvlist, pv_plist) { + TAILQ_FOREACH_SAFE(pv, &pmap->pm_pvlist, pv_plist, npv) { va = pv->pv_va; if (va >= sva && va < eva) { pte = pmap_find_vhpt(va); -- cgit v1.1