summaryrefslogtreecommitdiffstats
path: root/sys/ia64
diff options
context:
space:
mode:
authoralc <alc@FreeBSD.org>2004-07-15 03:20:00 +0000
committeralc <alc@FreeBSD.org>2004-07-15 03:20:00 +0000
commitcefb6e866572048efc220d3cfaf4be91bf7de6b9 (patch)
tree46fe7e768427b7db1b55327397920a1ca141632a /sys/ia64
parent429d9c9041b575c1e0eb8588f146b6960077411a (diff)
downloadFreeBSD-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@
Diffstat (limited to 'sys/ia64')
-rw-r--r--sys/ia64/ia64/pmap.c4
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);
OpenPOWER on IntegriCloud