diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2015-06-18 12:15:33 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2015-06-18 12:15:33 +0200 |
commit | 0dab8869adf16f425b0cbd13eef1a8df4d2823f0 (patch) | |
tree | cf39082acb7c714f43ef7d9aff2cae25e94c96c4 /sys/src/9/port/page.c | |
parent | fd8597ac315b3be5f5bdb85445345a7ba4627c15 (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.c | 2 |
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); |