提交 ba04b3e7 创建 作者: Austin Clements's avatar Austin Clements

Fix similar leak in copyuvm

上级 dd645ef1
...@@ -313,13 +313,17 @@ copyuvm(pde_t *pgdir, uint sz) ...@@ -313,13 +313,17 @@ copyuvm(pde_t *pgdir, uint sz)
if(*pte & PTE_P){ if(*pte & PTE_P){
pa = PTE_ADDR(*pte); pa = PTE_ADDR(*pte);
if (!(mem = kalloc())) if (!(mem = kalloc()))
return 0; goto bad;
memmove(mem, (char *)pa, PGSIZE); memmove(mem, (char *)pa, PGSIZE);
if (!mappages(d, (void *)i, PGSIZE, PADDR(mem), PTE_W|PTE_U)) if (!mappages(d, (void *)i, PGSIZE, PADDR(mem), PTE_W|PTE_U))
return 0; goto bad;
} }
} }
return d; return d;
bad:
freevm(d);
return 0;
} }
// Allocate one page table for the machine for the kernel address // Allocate one page table for the machine for the kernel address
......
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论