1.问题描述
vma__merge函数中case 4场景只处理了与prev vma重叠的内存空间,为什么没有处理新区域中其他未重叠的空间?
2.代码
在mmap.c中vma__merge函数,只处理了[prev->vm_start,addr],未将[addr,end]与next vma合并
if (prev && addr < prev->vm_end) /* case 4 */
err = __vma_adjust(prev, prev->vm_start,
addr, prev->vm_pgoff, NULL, next);