From 402ee30714c2cefa9116ff2031672bc6a8cd5c0b Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Mon, 27 Jun 2011 06:47:18 +0200 Subject: [PATCH] kernel: fix issue #62 (vunmap bug) reported from http://9fans.net/archive/2011/06/262 --- sys/src/9/pc/mmu.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/sys/src/9/pc/mmu.c b/sys/src/9/pc/mmu.c index 06b195fca..823c9a6d8 100644 --- a/sys/src/9/pc/mmu.c +++ b/sys/src/9/pc/mmu.c @@ -739,16 +739,13 @@ pdbunmap(ulong *pdb, ulong va, int size) 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));