fix: 解决了page的锁未被初始化的bug

This commit is contained in:
fslongjin
2022-08-15 12:09:04 +08:00
parent 1dd9195d69
commit 06af77bd79
13 changed files with 33 additions and 26 deletions

View File

@ -353,13 +353,10 @@ int mm_map_vma(struct vm_area_struct *vma, uint64_t paddr)
struct Page *pg = Phy_to_2M_Page(paddr);
if (unlikely(pg->anon_vma == NULL)) // 若页面不存在anon_vma则为页面创建anon_vma
{
uint64_t rflags;
// todo: 查明为什么在mm_init中spin init之后pg会变为0
spin_init(&pg->op_lock);
spin_lock_irqsave(&pg->op_lock, rflags);
spin_lock(&pg->op_lock);
if (unlikely(pg->anon_vma == NULL))
__anon_vma_create_alloc(pg, false);
spin_unlock_irqrestore(&pg->op_lock, rflags);
spin_unlock(&pg->op_lock);
}
barrier();
// 将anon vma与vma进行绑定