ref: 402ee30714c2cefa9116ff2031672bc6a8cd5c0b
parent: a5717fb10f4d959ce5ce765bbc73d81baf492da4
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));
--
⑨