Messages in this thread | | | Date | Wed, 24 Jul 2019 10:57:36 +0200 | From | Oleg Nesterov <> | Subject | Re: [PATCH v7 2/4] uprobe: use original page when all uprobes are removed |
| |
On 07/24, Song Liu wrote: > > > > On Jul 15, 2019, at 8:25 AM, Oleg Nesterov <oleg@redhat.com> wrote: > > > >> + 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,
Hmm. I don't think so.
> so > this should be really rare case. But I guess we can check anyway.
Can? I think we should or this code is simply wrong...
> > 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.
But we need to do this anyway? At least with your patch replace_page() still does this after page_add_file_rmap().
> I think current solution is better than > that,
perhaps, I won't argue,
> as it saves a page fault.
I don't think it matters in this case.
Oleg.
| |