> On Jul 15, 2019, at 8:25 AM, Oleg Nesterov <oleg@xxxxxxxxxx> wrote: > > On 06/25, Song Liu wrote: >> >> This patch allows uprobe to use original page when possible (all uprobes >> on the page are already removed). > > I can't review. I do not understand vm enough. > >> + if (!is_register) { >> + struct page *orig_page; >> + pgoff_t index; >> + >> + index = vaddr_to_offset(vma, vaddr & PAGE_MASK) >> PAGE_SHIFT; >> + orig_page = find_get_page(vma->vm_file->f_inode->i_mapping, >> + index); >> + >> + if (orig_page) { >> + if (pages_identical(new_page, orig_page)) { > > Shouldn't we at least check PageUptodate? For page cache, we only do ClearPageUptodate() on read failures, so this should be really rare case. But I guess we can check anyway. > > and I am a bit surprised there is no simple way to unmap the old page > in this case... The easiest way I have found requires flush_cache_page() plus a few mmu_notifier calls around it. I think current solution is better than that, as it saves a page fault. Thanks, Song