uprobes: Introduce MMF_HAS_UPROBES
authorOleg Nesterov <oleg@redhat.com>
Wed, 8 Aug 2012 15:11:42 +0000 (17:11 +0200)
committerOleg Nesterov <oleg@redhat.com>
Tue, 28 Aug 2012 16:21:18 +0000 (18:21 +0200)
commitf8ac4ec9c064b330dcc49e03c450fe74298c4622
tree62d53120d0289719438d27de5f868c36e136ed28
parent78f7411668aa0b2006d331f6a288416dd91b8e5d
uprobes: Introduce MMF_HAS_UPROBES

Add the new MMF_HAS_UPROBES flag. It is set by install_breakpoint()
and it is copied by dup_mmap(), uprobe_pre_sstep_notifier() checks
it to avoid the slow path if the task was never probed. Perhaps it
makes sense to check it in valid_vma(is_register => false) as well.

This needs the new dup_mmap()->uprobe_dup_mmap() hook. We can't use
uprobe_reset_state() or put MMF_HAS_UPROBES into MMF_INIT_MASK, we
need oldmm->mmap_sem to avoid the race with uprobe_register() or
mmap() from another thread.

Currently we never clear this bit, it can be false-positive after
uprobe_unregister() or uprobe_munmap() or if dup_mmap() hits the
probed VM_DONTCOPY vma. But this is fine correctness-wise and has
no effect unless the task hits the non-uprobe breakpoint.

Signed-off-by: Oleg Nesterov <oleg@redhat.com>
Acked-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
include/linux/sched.h
include/linux/uprobes.h
kernel/events/uprobes.c
kernel/fork.c