summaryrefslogtreecommitdiffstats
path: root/sys/i386
diff options
context:
space:
mode:
authordt <dt@FreeBSD.org>1999-01-07 22:15:51 +0000
committerdt <dt@FreeBSD.org>1999-01-07 22:15:51 +0000
commit6198a1048590fb39abd869503ece286b5a59936f (patch)
tree6ecec52ff11bf38fd8ce76ad09e59f77ce4110e4 /sys/i386
parent849473d83b99e5328cf7c91d4fb04b070a881b81 (diff)
downloadFreeBSD-src-6198a1048590fb39abd869503ece286b5a59936f.zip
FreeBSD-src-6198a1048590fb39abd869503ece286b5a59936f.tar.gz
Make pmap_ts_referenced check more than 1 pv_entry. (One should be carefull
when move elements to the tail of a list in a loop...)
Diffstat (limited to 'sys/i386')
-rw-r--r--sys/i386/i386/pmap.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/sys/i386/i386/pmap.c b/sys/i386/i386/pmap.c
index 3f69ab0..79cc809 100644
--- a/sys/i386/i386/pmap.c
+++ b/sys/i386/i386/pmap.c
@@ -39,7 +39,7 @@
* SUCH DAMAGE.
*
* from: @(#)pmap.c 7.7 (Berkeley) 5/12/91
- * $Id: pmap.c,v 1.214 1998/11/27 01:14:21 tegge Exp $
+ * $Id: pmap.c,v 1.215 1998/12/07 21:58:18 archie Exp $
*/
/*
@@ -3205,7 +3205,7 @@ pmap_phys_address(ppn)
int
pmap_ts_referenced(vm_offset_t pa)
{
- register pv_entry_t pv;
+ register pv_entry_t pv, pvf, pvn;
pv_table_t *ppv;
unsigned *pte;
int s;
@@ -3226,9 +3226,9 @@ pmap_ts_referenced(vm_offset_t pa)
/*
* Not found, check current mappings returning immediately if found.
*/
- for (pv = TAILQ_FIRST(&ppv->pv_list);
- pv;
- pv = TAILQ_NEXT(pv, pv_list)) {
+ pvf = TAILQ_FIRST(&ppv->pv_list);
+ for (pv = pvf; pv && pv != pvf; pv = pvn) {
+ pvn = TAILQ_NEXT(pv, pv_list);
TAILQ_REMOVE(&ppv->pv_list, pv, pv_list);
/*
OpenPOWER on IntegriCloud