summaryrefslogtreecommitdiff
path: root/sys/src/9/port/page.c
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2015-06-18 12:15:33 +0200
committercinap_lenrek <cinap_lenrek@felloff.net>2015-06-18 12:15:33 +0200
commit0dab8869adf16f425b0cbd13eef1a8df4d2823f0 (patch)
treecf39082acb7c714f43ef7d9aff2cae25e94c96c4 /sys/src/9/port/page.c
parentfd8597ac315b3be5f5bdb85445345a7ba4627c15 (diff)
kernel: ignore memory pages with singular kernel addresses
addresses va's of 0 and -BY2PG cause trouble with some memmove()/memset() implementations and possibly other code because of the nil pointer and end pointers wrapping to zero.
Diffstat (limited to 'sys/src/9/port/page.c')
-rw-r--r--sys/src/9/port/page.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/src/9/port/page.c b/sys/src/9/port/page.c
index c16044512..2b0c10eeb 100644
--- a/sys/src/9/port/page.c
+++ b/sys/src/9/port/page.c
@@ -36,6 +36,8 @@ pageinit(void)
for(j=0; j<pm->npage; j++){
memset(p, 0, sizeof *p);
p->pa = pm->base+j*BY2PG;
+ if(cankaddr(p->pa) && (KADDR(p->pa) == nil || KADDR(p->pa) == (void*)-BY2PG))
+ continue;
p->color = color;
color = (color+1)%NCOLOR;
pagechainhead(p);