git: 9front

Download patch

ref: 2dae178449906bb21eee134ccb81985638dcb38c
parent: 22c89d7f43b0e942e536c3cd80f12630822a6322
parent: 8be6f58936fa56f6624cbe47db453e589092ebf1
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Fri Nov 6 12:28:29 EST 2015

merge

--- a/sys/src/9/port/fault.c
+++ b/sys/src/9/port/fault.c
@@ -237,10 +237,8 @@
 				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 @@
 			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 @@
 {
 	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)))
--