]> www.infradead.org Git - users/hch/misc.git/commit
mm/vma: the pgoff is correct if can_merge_right
authorWei Yang <richard.weiyang@gmail.com>
Thu, 24 Oct 2024 09:33:47 +0000 (09:33 +0000)
committerAndrew Morton <akpm@linux-foundation.org>
Thu, 7 Nov 2024 04:11:20 +0000 (20:11 -0800)
commit642c66d84cd4c0506698ae52d0c6fd12d3695c01
tree7b28a831af48e30910c3ba1c6079916fa413275c
parent5ac87a885aecb3fa2aae04215410882757a2ef06
mm/vma: the pgoff is correct if can_merge_right

By this point can_vma_merge_right() must have returned true, which implies
can_vma_merge_before() also returned true, which already asserts that the
pgoff is as expected for a merge with the following VMA, thus this
assignment is redundant.

Below is a more detail explanation.

Current definition of can_vma_merge_right() is:

static bool can_vma_merge_right(struct vma_merge_struct *vmg,
bool can_merge_left)
{
if (!vmg->next || vmg->end != vmg->next->vm_start ||
    !can_vma_merge_before(vmg))
return false;
...
}

And:

static bool can_vma_merge_before(struct vma_merge_struct *vmg)
{
pgoff_t pglen = PHYS_PFN(vmg->end - vmg->start);
...
if (vmg->next->vm_pgoff == vmg->pgoff + pglen)
return true;
...
}

Which implies vmg->pgoff == vmg->next->vm_pgoff - pglen.

None of these values are changed between the check and prior assignment,
so this was an entirely redundant assignment.

[akpm@linux-foundation.org: remove now-unused local]
[lorenzo.stoakes@oracle.com: rephrase the changelog]
Link: https://lkml.kernel.org/r/20241024093347.18057-1-richard.weiyang@gmail.com
Signed-off-by: Wei Yang <richard.weiyang@gmail.com>
Reviewed-by: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
Cc: Jann Horn <jannh@google.com>
Cc: Vlastimil Babka <vbabka@suse.cz>
Cc: Liam R. Howlett <Liam.Howlett@oracle.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
mm/vma.c