Messages in this thread | | | Date | Tue, 10 Dec 2013 22:24:09 +0100 | From | Oleg Nesterov <> | Subject | Re: [PATCH 0/1] uprobes: Kill __replace_page(), change uprobe_write_opcode() to rely on gup(WRITE) |
| |
On 12/10, Linus Torvalds wrote: > > On Tue, Dec 10, 2013 at 12:04 PM, Oleg Nesterov <oleg@redhat.com> wrote: > >> We'd be *much* better off using get_user_pages_fast() if possible - > >> and I bet _is_ possible in 99% of all cases. > > > > We can't. get_user_pages_fast() takes mmap_sem. > > Yeah, and we need to look up the page table entry anyway, so what we > actually want here is just the page table walker,
Yes, this is clear.
And damn, somehow I forgot that _fast() can (obviously) only use current->mm.
> none of the "get > page" crap at all. > > So the core function should (I think) just do something like:
I'll try to think, but this is what I actually tried to avoid.
I mean,
> Put another way: I actually think the existing "__replace_page()" code > is closer to being good than that disgusting uprobe_write_opcode() > function. I think you may be getting rid of the wrong ugly function.
And perhaps you are right.
But my only motivation was: rely on gup() to simplify this code. Yes, gup() is slow, but it works and we can avoid the "nontrivial" things like page_remove_rmap/munlock_vma_page.
If we want to optimize this code, then this patch obviously goes to the wrong direction, I agree.
Oleg.
| |