On Thu, Oct 24, 2024 at 09:10:12AM +0000, Wei Yang wrote: > On Thu, Oct 24, 2024 at 10:03:34AM +0100, Lorenzo Stoakes wrote: > >On Thu, Oct 24, 2024 at 08:42:22AM +0000, Wei Yang wrote: > >> can_merge_right implies can_vma_merge_right() has checked the pgoff. > >> > >> Don't need to assign it again. > > > >Would prefer a bigger commit message something like: > > > >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. > > > > Will change to this in next version. Thanks. The actual change itself looks good! > > >> > >> Signed-off-by: Wei Yang <richard.weiyang@xxxxxxxxx> > > > >Reviewed-by: Lorenzo Stoakes <lorenzo.stoakes@xxxxxxxxxx> > > > >> CC: Lorenzo Stoakes <lorenzo.stoakes@xxxxxxxxxx> > >> --- > >> mm/vma.c | 2 -- > >> 1 file changed, 2 deletions(-) > >> > >> diff --git a/mm/vma.c b/mm/vma.c > >> index 4737afcb064c..fb4f1863f88e 100644 > >> --- a/mm/vma.c > >> +++ b/mm/vma.c > >> @@ -915,7 +915,6 @@ struct vm_area_struct *vma_merge_new_range(struct vma_merge_struct *vmg) > >> unsigned long start = vmg->start; > >> unsigned long end = vmg->end; > >> pgoff_t pgoff = vmg->pgoff; > >> - pgoff_t pglen = PHYS_PFN(end - start); > >> bool can_merge_left, can_merge_right; > >> > >> mmap_assert_write_locked(vmg->mm); > >> @@ -936,7 +935,6 @@ struct vm_area_struct *vma_merge_new_range(struct vma_merge_struct *vmg) > >> if (can_merge_right) { > >> vmg->end = next->vm_end; > >> vmg->vma = next; > >> - vmg->pgoff = next->vm_pgoff - pglen; > >> } > >> > >> /* If we can merge with the previous VMA, adjust vmg accordingly. */ > >> -- > >> 2.34.1 > >> > >> > > > >Thanks, nice spot! > > > >For the purposes of explaining it on-list this is because: > > > >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. > > Do you suggest me to add this in change log? Sure, I am a big believer in putting as much detail as possible in commit messages, we definitely need to explain why we're doing this to future observers (including me... ;) > > -- > Wei Yang > Help you, Help me >