--- /sys/src/9k/port/segment.c +++ /sys/src/9k/port/segment.c @@ -270,8 +270,7 @@ isoverlap(Proc* p, uintptr va, usize len) ns = p->seg[i]; if(ns == 0) continue; - if((newtop > ns->base && newtop <= ns->top) || - (va >= ns->base && va < ns->top)) + if(newtop > ns->base && va < ns->top) return ns; } return nil; --- /sys/src/9k/port/sysseg.c +++ /sys/src/9k/port/sysseg.c @@ -108,7 +108,7 @@ ibrk(uintptr addr, int seg) ns = up->seg[i]; if(ns == 0 || ns == s) continue; - if(newtop >= ns->base && newtop < ns->top) + if(newtop > ns->base && s->base < ns->top) error(Esoverlap); }