mtrr: fix mtrr index out of range for vcnt > Nmtrr
This commit is contained in:
parent
fa4448b2d5
commit
6d24cced8f
|
@ -290,6 +290,8 @@ mtrr(uvlong base, uvlong size, char *tstr)
|
||||||
qlock(&mtrrlk);
|
qlock(&mtrrlk);
|
||||||
slot = -1;
|
slot = -1;
|
||||||
vcnt = cap & Capvcnt;
|
vcnt = cap & Capvcnt;
|
||||||
|
if(vcnt > Nmtrr)
|
||||||
|
vcnt = Nmtrr;
|
||||||
for(i = 0; i < vcnt; i++){
|
for(i = 0; i < vcnt; i++){
|
||||||
mtrrget(&mtrr, i);
|
mtrrget(&mtrr, i);
|
||||||
mok = mtrrdec(&mtrr, &mp, &msize, &mtype);
|
mok = mtrrdec(&mtrr, &mp, &msize, &mtype);
|
||||||
|
@ -330,6 +332,8 @@ mtrrprint(char *buf, long bufsize)
|
||||||
n += snprint(buf+n, bufsize-n, "cache default %s\n",
|
n += snprint(buf+n, bufsize-n, "cache default %s\n",
|
||||||
type2str(def & Deftype));
|
type2str(def & Deftype));
|
||||||
vcnt = cap & Capvcnt;
|
vcnt = cap & Capvcnt;
|
||||||
|
if(vcnt > Nmtrr)
|
||||||
|
vcnt = Nmtrr;
|
||||||
for(i = 0; i < vcnt; i++){
|
for(i = 0; i < vcnt; i++){
|
||||||
mtrrget(&mtrr, i);
|
mtrrget(&mtrr, i);
|
||||||
if (mtrrdec(&mtrr, &base, &size, &type))
|
if (mtrrdec(&mtrr, &base, &size, &type))
|
||||||
|
|
Loading…
Reference in a new issue