From 647a1da10867b87f90e7f917d7c33ba69ed2a705 Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Sun, 12 Apr 2015 16:05:05 +0200 Subject: [PATCH] segment: fix print buffer overflow, map fixed segments uncached, add to zynq kernel --- sys/src/9/port/devsegment.c | 8 ++++---- sys/src/9/port/fault.c | 2 +- sys/src/9/zynq/zynq | 1 + 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/sys/src/9/port/devsegment.c b/sys/src/9/port/devsegment.c index 7e5a18e72..41967e829 100644 --- a/sys/src/9/port/devsegment.c +++ b/sys/src/9/port/devsegment.c @@ -319,7 +319,7 @@ static long segmentread(Chan *c, void *a, long n, vlong voff) { Globalseg *g; - char buf[32]; + char buf[128]; if(c->qid.type == QTDIR) return devdirread(c, a, n, (Dirtab *)0, 0L, segmentgen); @@ -329,11 +329,11 @@ segmentread(Chan *c, void *a, long n, vlong voff) g = c->aux; if(g->s == nil) error("segment not yet allocated"); - if(g->s->type&SG_TYPE == SG_FIXED) - sprint(buf, "va %#p %#p fixed %#p\n", g->s->base, g->s->top-g->s->base, + if((g->s->type&SG_TYPE) == SG_FIXED) + snprint(buf, sizeof(buf), "va %#p %#p fixed %#p\n", g->s->base, g->s->top-g->s->base, g->s->map[0]->pages[0]->pa); else - sprint(buf, "va %#p %#p\n", g->s->base, g->s->top-g->s->base); + snprint(buf, sizeof(buf), "va %#p %#p\n", g->s->base, g->s->top-g->s->base); return readstr(voff, a, n, buf); case Qdata: g = c->aux; diff --git a/sys/src/9/port/fault.c b/sys/src/9/port/fault.c index f1ce5c223..966c2992d 100644 --- a/sys/src/9/port/fault.c +++ b/sys/src/9/port/fault.c @@ -267,7 +267,6 @@ fixfault(Segment *s, uintptr addr, int read, int doputmmu) copypage(old, *pg); putpage(old); } - case SG_FIXED: /* Never paged out */ mmuphys = PPN((*pg)->pa) | PTEWRITE | PTEVALID; (*pg)->modref = PG_MOD|PG_REF; break; @@ -280,6 +279,7 @@ fixfault(Segment *s, uintptr addr, int read, int doputmmu) new->ref = 1; *pg = new; } + case SG_FIXED: /* Never paged out */ if (checkaddr && addr == addr2check) (*checkaddr)(addr, s, *pg); mmuphys = PPN((*pg)->pa) |PTEWRITE|PTEUNCACHED|PTEVALID; diff --git a/sys/src/9/zynq/zynq b/sys/src/9/zynq/zynq index e631c3a19..3241844a4 100644 --- a/sys/src/9/zynq/zynq +++ b/sys/src/9/zynq/zynq @@ -21,6 +21,7 @@ dev draw screen mouse usb + segment link etherzynq