Qi Zheng <qi.zheng@xxxxxxxxx> writes: > Hi Alistair, > > On 2023/5/22 14:37, Alistair Popple wrote: [...] >> + if (changed) { >> + struct mmu_notifier_range range; >> + >> + mmu_notifier_range_init(&range, MMU_NOTIFY_PROTECTION_UPGRADE, >> + 0, vmf->vma, vmf->vma->vm_mm, >> + vmf->address & PAGE_MASK, >> + (vmf->address & PAGE_MASK) + PAGE_SIZE); >> + mmu_notifier_invalidate_range_start(&range); >> + mmu_notifier_invalidate_range_end(&range); >> + } > > There are four similar patterns, can we introduce a helper function to > deduplicate them? For sure. How about something like this? void mmu_notifier_range_start_end(enum mmu_notifier_event event, struct vm_area_struct *vma, struct mm_struct *mm, unsigned long start, unsigned long end) As an aside I didn't just use mmu_notifier_invalidate_range() as that doesn't allow an event type to be set for interval notifiers which may want to filter this. >> + >> return 0; >> } >>