summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2015-11-06 17:28:29 +0100
committercinap_lenrek <cinap_lenrek@felloff.net>2015-11-06 17:28:29 +0100
commitb21482828b1597b5db66878611d50c0f70254af6 (patch)
treeddd6691a0cd36bdeae5c31bc08ce48d29d4a4f54
parent3133a2a4e70740906fd69abe6a2304f8bdedd448 (diff)
parent00572496ce8e2e3919586a0ce3df1fc457220ae5 (diff)
downloadplan9front-b21482828b1597b5db66878611d50c0f70254af6.tar.xz
merge
-rw-r--r--sys/src/9/port/fault.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/sys/src/9/port/fault.c b/sys/src/9/port/fault.c
index 64832d23f..0d5e1ac5a 100644
--- a/sys/src/9/port/fault.c
+++ b/sys/src/9/port/fault.c
@@ -237,10 +237,8 @@ fixfault(Segment *s, uintptr addr, int read)
return -1;
*pg = new;
}
- goto common;
-
- case SG_DATA:
- common: /* Demand load/pagein/copy on write */
+ /* wet floor */
+ case SG_DATA: /* Demand load/pagein/copy on write */
if(pagedout(*pg))
pio(s, addr, soff, pg);
@@ -279,6 +277,7 @@ fixfault(Segment *s, uintptr addr, int read)
new->ref = 1;
*pg = new;
}
+ /* wet floor */
case SG_FIXED: /* Never paged out */
if (checkaddr && addr == addr2check)
(*checkaddr)(addr, s, *pg);
@@ -301,7 +300,7 @@ okaddr(uintptr addr, ulong len, int write)
{
Segment *s;
- if((long)len >= 0 && addr+len >= addr) {
+ if((long)len >= 0 && len <= -addr) {
for(;;) {
s = seg(up, addr, 0);
if(s == nil || (write && (s->type&SG_RONLY)))