• Oleg Nesterov's avatar
    uprobes: Teach build_probe_list() to consider the range · 891c3970
    Oleg Nesterov authored
    Currently build_probe_list() builds the list of all uprobes
    attached to the given inode, and the caller should filter out
    those who don't fall into the [start,end) range, this is
    sub-optimal.
    
    This patch turns find_least_offset_node() into
    find_node_in_range() which returns the first node inside the
    [min,max] range, and changes build_probe_list() to use this node
    as a starting point for rb_prev() and rb_next() to find all
    other nodes the caller needs. The resulting list is no longer
    sorted but we do not care.
    
    This can speed up both build_probe_list() and the callers, but
    there is another reason to introduce find_node_in_range(). It
    can be used to figure out whether the given vma has uprobes or
    not, this will be needed soon.
    
    While at it, shift INIT_LIST_HEAD(tmp_list) into
    build_probe_list().
    Signed-off-by: default avatarOleg Nesterov <oleg@redhat.com>
    Acked-by: Srikar Dronamraju <srikar.vnet.ibm.com>
    Cc: Anton Arapov <anton@redhat.com>
    Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
    Link: http://lkml.kernel.org/r/20120729182240.GA20352@redhat.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    891c3970
uprobes.c 39 KB