-EEXIST from install_breakpoint() no longer makes sense, all
callers should simply treat it as "success". Change the code
to return zero and simplify register_for_each_vma().
Signed-off-by: Oleg Nesterov <oleg@redhat.com>
Acked-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
*/
result = is_swbp_at_addr(mm, vaddr);
if (result == 1)
*/
result = is_swbp_at_addr(mm, vaddr);
if (result == 1)
if (result)
return result;
if (result)
return result;
* Hence behave as if probe already existed.
*/
if (!uprobe->consumers)
* Hence behave as if probe already existed.
*/
if (!uprobe->consumers)
if (!(uprobe->flags & UPROBE_COPY_INSN)) {
ret = copy_insn(uprobe, vma->vm_file);
if (!(uprobe->flags & UPROBE_COPY_INSN)) {
ret = copy_insn(uprobe, vma->vm_file);
vaddr_to_offset(vma, info->vaddr) != uprobe->offset)
goto unlock;
vaddr_to_offset(vma, info->vaddr) != uprobe->offset)
goto unlock;
err = install_breakpoint(uprobe, mm, vma, info->vaddr);
err = install_breakpoint(uprobe, mm, vma, info->vaddr);
- /*
- * We can race against uprobe_mmap(), see the
- * comment near uprobe_hash().
- */
- if (err == -EEXIST)
- err = 0;
- } else {
remove_breakpoint(uprobe, mm, info->vaddr);
remove_breakpoint(uprobe, mm, info->vaddr);
unlock:
up_write(&mm->mmap_sem);
free:
unlock:
up_write(&mm->mmap_sem);
free: