提交 6150f2f6 创建 作者: Nickolai Zeldovich's avatar Nickolai Zeldovich

oops, forgetting to set succ for new range!

上级 45c455ee
......@@ -515,6 +515,9 @@ crange_locked::replace(range *repl)
newlast = e;
}
if (newlast)
newlast->next[0] = succ_;
// do compare-exchange first, and only then mark the old ranges as deleted;
// otherwise, concurrent readers may not find either old or new ranges.
assert(prev_->next[0].cmpxch(first_?:succ_, repl?:succ_));
......
......@@ -277,17 +277,17 @@ vmap::insert(vmnode *n, uptr vma_start)
// XXX handle overlaps
vma *e = new vma();
if (e == 0)
if (e == 0) {
cprintf("vmap::insert: out of vmas\n");
return -1;
}
e->vma_start = vma_start;
e->vma_end = vma_start + len;
e->n = n;
n->ref++;
span.replace(new range(&cr, vma_start, len, e, 0));
updatepages(pml4, (void*) e->vma_start, (void*) (e->vma_end-1), 0);
return 0;
}
......@@ -307,10 +307,8 @@ vmap::remove(uptr vma_start, uptr len)
// XXX handle partial unmap
span.replace(0);
updatepages(pml4, (void*) vma_start, (void*) (vma_start + len - 1), 0);
tlbflush();
return 0;
}
......
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论