diff options
author | alc <alc@FreeBSD.org> | 2004-07-15 03:20:00 +0000 |
---|---|---|
committer | alc <alc@FreeBSD.org> | 2004-07-15 03:20:00 +0000 |
commit | cefb6e866572048efc220d3cfaf4be91bf7de6b9 (patch) | |
tree | 46fe7e768427b7db1b55327397920a1ca141632a | |
parent | 429d9c9041b575c1e0eb8588f146b6960077411a (diff) | |
download | FreeBSD-src-cefb6e866572048efc220d3cfaf4be91bf7de6b9.zip FreeBSD-src-cefb6e866572048efc220d3cfaf4be91bf7de6b9.tar.gz |
A loop in pmap_remove() should use TAILQ_FOREACH_SAFE(), not
TAILQ_FOREACH(), because the loop deletes elements from the list.
Reviewed by: marcel@
-rw-r--r-- | sys/ia64/ia64/pmap.c | 4 |
1 files changed, 2 insertions, 2 deletions
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); |