mm/mmap: leave adjust_next as virtual address instead of page frame number
Instead of converting adjust_next between bytes and pages number, let's just store the virtual address into adjust_next. Also, this patch fixes one typo in the comment of vma_adjust_trans_huge(). [vbabka@suse.cz: changelog tweak] Signed-off-by: Wei Yang <richard.weiyang@linux.alibaba.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Acked-by: Vlastimil Babka <vbabka@suse.cz> Cc: Mike Kravetz <mike.kravetz@oracle.com> Link: http://lkml.kernel.org/r/20200828081031.11306-1-richard.weiyang@linux.alibaba.com Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
このコミットが含まれているのは:
@@ -758,7 +758,7 @@ int __vma_adjust(struct vm_area_struct *vma, unsigned long start,
|
||||
* vma expands, overlapping part of the next:
|
||||
* mprotect case 5 shifting the boundary up.
|
||||
*/
|
||||
adjust_next = (end - next->vm_start) >> PAGE_SHIFT;
|
||||
adjust_next = (end - next->vm_start);
|
||||
exporter = next;
|
||||
importer = vma;
|
||||
VM_WARN_ON(expand != importer);
|
||||
@@ -768,7 +768,7 @@ int __vma_adjust(struct vm_area_struct *vma, unsigned long start,
|
||||
* split_vma inserting another: so it must be
|
||||
* mprotect case 4 shifting the boundary down.
|
||||
*/
|
||||
adjust_next = -((vma->vm_end - end) >> PAGE_SHIFT);
|
||||
adjust_next = -(vma->vm_end - end);
|
||||
exporter = vma;
|
||||
importer = next;
|
||||
VM_WARN_ON(expand != importer);
|
||||
@@ -840,8 +840,8 @@ again:
|
||||
}
|
||||
vma->vm_pgoff = pgoff;
|
||||
if (adjust_next) {
|
||||
next->vm_start += adjust_next << PAGE_SHIFT;
|
||||
next->vm_pgoff += adjust_next;
|
||||
next->vm_start += adjust_next;
|
||||
next->vm_pgoff += adjust_next >> PAGE_SHIFT;
|
||||
}
|
||||
|
||||
if (root) {
|
||||
|
新しいイシューから参照
ユーザーをブロックする