xv6

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit ba04b3e70e4f1916c777d62de53088d96b09579f
parent dd645ef11911596d73d128c1da53579678c56aee
Author: Austin Clements <amdragon@mit.edu>
Date:   Wed,  1 Sep 2010 00:27:12 -0400

Fix similar leak in copyuvm

Diffstat:
Mvm.c | 8++++++--
1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/vm.c b/vm.c @@ -313,13 +313,17 @@ copyuvm(pde_t *pgdir, uint sz) if(*pte & PTE_P){ pa = PTE_ADDR(*pte); if (!(mem = kalloc())) - return 0; + goto bad; memmove(mem, (char *)pa, PGSIZE); if (!mappages(d, (void *)i, PGSIZE, PADDR(mem), PTE_W|PTE_U)) - return 0; + goto bad; } } return d; + +bad: + freevm(d); + return 0; } // Allocate one page table for the machine for the kernel address