On Wed, Jan 26, 2022 at 1:34 AM David Rientjes <rientjes@xxxxxxxxxx> wrote: > > On Wed, 26 Jan 2022, Pasha Tatashin wrote: > > > Unify the code that flushes, clears pmd entry, and frees the PTE table > > level into a new function collapse_and_free_pmd(). > > > > This clean-up is useful as in the next patch we will add another call to > > this function to iterate through PTE prior to freeing the level for page > > table check. > > > > Signed-off-by: Pasha Tatashin <pasha.tatashin@xxxxxxxxxx> > > Acked-by: David Rientjes <rientjes@xxxxxxxxxx> Thank you, David. > > One nit below. > > > --- > > mm/khugepaged.c | 32 ++++++++++++++++---------------- > > 1 file changed, 16 insertions(+), 16 deletions(-) > > > > diff --git a/mm/khugepaged.c b/mm/khugepaged.c > > index 35f14d0a00a6..440112355ffe 100644 > > --- a/mm/khugepaged.c > > +++ b/mm/khugepaged.c > > @@ -1416,6 +1416,17 @@ static int khugepaged_add_pte_mapped_thp(struct mm_struct *mm, > > return 0; > > } > > > > +static void collapse_and_free_pmd(struct mm_struct *mm, struct vm_area_struct *vma, > > + unsigned long addr, pmd_t *pmdp) > > +{ > > + spinlock_t *ptl = pmd_lock(vma->vm_mm, pmdp); > > + pmd_t pmd = pmdp_collapse_flush(vma, addr, pmdp); > > + > > + spin_unlock(ptl); > > No strong objection, but I think the typical style would be to declare the > local variables separately and avoid mixing the code, especially in cases > when taking locks (and not just initializing the local variables). I will address this in the next revision. Thank you, Pasha