• Oleg Nesterov's avatar
    uprobes: _register() should always do register_for_each_vma(true) · 9a98e03c
    Oleg Nesterov authored
    To support the filtering uprobe_register() should do
    register_for_each_vma(true) every time the new consumer comes,
    we need to install the previously nacked breakpoints.
    
    Note:
    	- uprobes_mutex[] should die, what it actually protects is
    	  alloc_uprobe().
    
    	- UPROBE_RUN_HANDLER should die too, obviously it can't work
    	  unless uprobe has a single consumer. The consumer should
    	  serialize with _register/_unregister itself. Or this flag
    	  should live in uprobe_consumer->state.
    
    	- Perhaps we can do some optimizations later. For example, if
    	  filter_chain() never returns false uprobe can record this
    	  fact and avoid the unnecessary register_for_each_vma().
    Signed-off-by: default avatarOleg Nesterov <oleg@redhat.com>
    Acked-by: default avatarSrikar Dronamraju <srikar@linux.vnet.ibm.com>
    9a98e03c
uprobes.c 39 KB