fix pmap_changebit() to look for the bit in the page attrs
in addition to any PTEs. fixes PR 14220.
This commit is contained in:
parent
1bcfb3cc57
commit
4c1a2f36f8
|
@ -1,4 +1,4 @@
|
||||||
/* $NetBSD: pmap.c,v 1.46 2001/07/22 13:08:09 wiz Exp $ */
|
/* $NetBSD: pmap.c,v 1.47 2001/10/13 18:28:10 chs Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 1995, 1996 Wolfgang Solfrank.
|
* Copyright (C) 1995, 1996 Wolfgang Solfrank.
|
||||||
|
@ -1215,14 +1215,14 @@ ptemodify(pg, mask, val)
|
||||||
if (attr == NULL)
|
if (attr == NULL)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
|
rv = *attr & (mask >> ATTRSHFT);
|
||||||
*attr &= ~mask >> ATTRSHFT;
|
*attr &= ~mask >> ATTRSHFT;
|
||||||
*attr |= val >> ATTRSHFT;
|
*attr |= val >> ATTRSHFT;
|
||||||
|
|
||||||
pv = pa_to_pv(pa);
|
pv = pa_to_pv(pa);
|
||||||
if (pv->pv_idx < 0)
|
if (pv->pv_idx < 0)
|
||||||
return FALSE;
|
return rv != 0;
|
||||||
|
|
||||||
rv = FALSE;
|
|
||||||
s = splvm();
|
s = splvm();
|
||||||
for (; pv; pv = pv->pv_next) {
|
for (; pv; pv = pv->pv_next) {
|
||||||
for (ptp = ptable + pv->pv_idx * 8, i = 8; --i >= 0; ptp++)
|
for (ptp = ptable + pv->pv_idx * 8, i = 8; --i >= 0; ptp++)
|
||||||
|
|
Loading…
Reference in New Issue