From 6d24cced8ffa8c85ecea680d533d83a1ca48bef1 Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Fri, 5 Jul 2013 00:55:48 +0200 Subject: [PATCH] mtrr: fix mtrr index out of range for vcnt > Nmtrr --- sys/src/9/pc/mtrr.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/sys/src/9/pc/mtrr.c b/sys/src/9/pc/mtrr.c index dc8e52baa..b40bf0de6 100644 --- a/sys/src/9/pc/mtrr.c +++ b/sys/src/9/pc/mtrr.c @@ -290,6 +290,8 @@ mtrr(uvlong base, uvlong size, char *tstr) qlock(&mtrrlk); slot = -1; vcnt = cap & Capvcnt; + if(vcnt > Nmtrr) + vcnt = Nmtrr; for(i = 0; i < vcnt; i++){ mtrrget(&mtrr, i); 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", type2str(def & Deftype)); vcnt = cap & Capvcnt; + if(vcnt > Nmtrr) + vcnt = Nmtrr; for(i = 0; i < vcnt; i++){ mtrrget(&mtrr, i); if (mtrrdec(&mtrr, &base, &size, &type))