提交 03b30863 创建 作者: Saarett's avatar Saarett 提交者: GitHub

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.
上级 59cdd6c6
...@@ -137,8 +137,10 @@ setupkvm(void) ...@@ -137,8 +137,10 @@ setupkvm(void)
panic("PHYSTOP too high"); panic("PHYSTOP too high");
for(k = kmap; k < &kmap[NELEM(kmap)]; k++) for(k = kmap; k < &kmap[NELEM(kmap)]; k++)
if(mappages(pgdir, k->virt, k->phys_end - k->phys_start, 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 0;
}
return pgdir; return pgdir;
} }
......
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论