> ------------------------------------------------------------------------------ > Subject: [PATCH v2 2/5] uprobes: __replace_page() should not use > page_address_in_vma() > > page_address_in_vma(old_page) in __replace_page() is ugly and wrong. > The caller already knows the correct virtual address, this page was > found by get_user_pages(vaddr). > > However, page_address_in_vma() can actually fail if page->mapping was > cleared by __delete_from_page_cache() after get_user_pages() returns. > But this means the race with page reclaim, write_opcode() should not > fail, it should retry and read this page again. Probably the race with > remove_mapping() is not possible due to page_freeze_refs() logic, but > afaics at least shmem_writepage()->shmem_delete_from_page_cache() can > clear ->mapping. > > We could change __replace_page() to return -EAGAIN in this case, but > it would be better to simply use the caller's vaddr and rely on > page_check_address(). > > Signed-off-by: Oleg Nesterov <o...@redhat.com>
Acked-by: Srikar Dronamraju <sri...@linux.vnet.ibm.com> -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/