水木社区手机版
首页
|版面-Linux内核技术(KernelTech)|
新版wap站已上线
返回
1/1
|
转到
主题:vma什么情况下会重叠?
楼主
|
flynetcn
|
2022-10-17 12:43:12
|
展开
这是do_brk里的一段代码,发现重叠直接删除,为什么会重叠呢?直接删除不会有问题吗?
————
while (find_vma_links(mm, addr, addr + len, &prev, &rb_link,
&rb_parent)) {
if (do_munmap(mm, addr, len, uf))
return -ENOMEM;
}
发自「今日水木 on 键盘侠」
--
FROM 124.64.16.*
2楼
|
flynetcn
|
2022-10-17 22:29:22
|
展开
https://elixir.bootlin.com/linux/v3.13.11/source/mm/mmap.c#L2626
【 在 flynetcn 的大作中提到: 】
: 这是do_brk里的一段代码,发现重叠直接删除,为什么会重叠呢?直接删除不会有问题吗?
: ————
: while (find\_vma\_links(mm, addr, addr + len, &prev, &rb_link,
: &rb_parent)) {
: if (do_
: ..................
发自「今日水木 on 键盘侠」
--
FROM 124.64.16.*
4楼
|
flynetcn
|
2022-10-18 21:35:14
|
展开
其实我的疑问是注释里的Clear old maps.里的old maps是怎么来的,我能想到的就是线程竞争导致了内存覆盖,因为正常逻辑走到这里就不应该有冲突。
【 在 colyli 的大作中提到: 】
: do_brk()是这么被调用的:
: /\* Ok, looks good - let it rip. */
: if (do_brk(oldbrk, newbrk-oldbrk) != oldbrk)
: goto out;
:
: 所以就是将进程的堆空间从oldbrk扩展到n
: ..................
发自「今日水木 on 键盘侠」
--
FROM 124.64.18.*
1/1
|
转到
选择讨论区
首页
|
分区
|
热推
BYR-Team
©
2010.
KBS Dev-Team
©
2011
登录完整版