lkml.org 
[lkml]   [2012]   [Apr]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH 2/6] uprobes: introduce is_swbp_at_addr_fast()
    From
    Date
    On Fri, 2012-04-06 at 00:21 +0200, Oleg Nesterov wrote:
    > +int __weak is_swbp_at_addr_fast(unsigned long vaddr)
    > +{
    > + uprobe_opcode_t opcode;
    > + int fault;
    > +
    > + pagefault_disable();
    > + fault = __copy_from_user_inatomic(&opcode, (void __user*)vaddr,
    > + sizeof(opcode));
    > + pagefault_enable();
    > +
    > + if (unlikely(fault)) {
    > + /*
    > + * XXX: read_opcode() lacks FOLL_FORCE, it can fail if
    > + * we race with another thread which does mprotect(NONE)
    > + * after we hit bp.
    > + */
    > + if (read_opcode(current->mm, vaddr, &opcode))
    > + return -EFAULT;
    > + }
    > +
    > + return is_swbp_insn(&opcode);
    > +}

    Why bother with the pagefault_disable() and unlikely fault case and not
    simply do copy_from_user() and have it deal with the fault if its needed
    anyway?


    \
     
     \ /
      Last update: 2012-04-16 12:11    [W:0.020 / U:64.160 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site