diff options
author | dt <dt@FreeBSD.org> | 1999-01-07 22:15:51 +0000 |
---|---|---|
committer | dt <dt@FreeBSD.org> | 1999-01-07 22:15:51 +0000 |
commit | 6198a1048590fb39abd869503ece286b5a59936f (patch) | |
tree | 6ecec52ff11bf38fd8ce76ad09e59f77ce4110e4 /sys | |
parent | 849473d83b99e5328cf7c91d4fb04b070a881b81 (diff) | |
download | FreeBSD-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')
-rw-r--r-- | sys/amd64/amd64/pmap.c | 10 | ||||
-rw-r--r-- | sys/i386/i386/pmap.c | 10 |
2 files changed, 10 insertions, 10 deletions
diff --git a/sys/amd64/amd64/pmap.c b/sys/amd64/amd64/pmap.c index 3f69ab0..79cc809 100644 --- a/sys/amd64/amd64/pmap.c +++ b/sys/amd64/amd64/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); /* 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); /* |