From: Saarett Date: Sun, 5 Feb 2017 10:44:56 +0000 (+0200) Subject: Free pgdir in setupkvm in case of mappages failure X-Git-Url: https://git.devinivas.org/?a=commitdiff_plain;h=03b30863279b111fb6b9f154a9bdaa831114adfb;p=cs3210-lab0.git Free pgdir in setupkvm in case of mappages failure There is a potential memory leak when mappages() fails inside setupkvm(). A call to freevm() is added in this case so as to reclaim the lost mapping pages. --- diff --git a/vm.c b/vm.c index 9db8b67..39642f4 100644 --- a/vm.c +++ b/vm.c @@ -137,8 +137,10 @@ setupkvm(void) panic("PHYSTOP too high"); for(k = kmap; k < &kmap[NELEM(kmap)]; k++) if(mappages(pgdir, k->virt, k->phys_end - k->phys_start, - (uint)k->phys_start, k->perm) < 0) + (uint)k->phys_start, k->perm) < 0) { + freevm(pgdir); return 0; + } return pgdir; }