git: 9front

Download patch

ref: e6971819018aefe7c2e0ab60f75e546f441e59be
parent: a1063e2dc019b900780870934419967146f2f03d
author: cinap_lenrek <cinap_lenrek@localhost>
date: Mon Jun 27 02:47:18 EDT 2011

kernel: fix issue #62 (vunmap bug) reported from http://9fans.net/archive/2011/06/262

--- a/sys/src/9/pc/mmu.c
+++ b/sys/src/9/pc/mmu.c
@@ -739,16 +739,13 @@
 	vae = va+size;
 	while(va < vae){
 		table = &pdb[PDX(va)];
-		if(!(*table & PTEVALID)){
+		if(!(*table & PTEVALID))
 			panic("vunmap: not mapped");
-			/* 
-			va = (va+4*MB-1) & ~(4*MB-1);
-			continue;
-			*/
-		}
 		if(*table & PTESIZE){
+			if(va & 4*MB-1)
+				panic("vunmap: misaligned: %#p\n", va);
 			*table = 0;
-			va = (va+4*MB-1) & ~(4*MB-1);
+			va += 4*MB;
 			continue;
 		}
 		table = KADDR(PPN(*table));
--