uprobes: Restrict valid_vma(false) to skip VM_SHARED vmas
authorOleg Nesterov <oleg@redhat.com>
Sun, 16 Sep 2012 17:31:39 +0000 (19:31 +0200)
committerOleg Nesterov <oleg@redhat.com>
Sat, 29 Sep 2012 19:21:54 +0000 (21:21 +0200)
commite40cfce626a5537994058ee9a940dcfdc0f68ef0
treece9a24a51906fb3437ea0f08851e4dfb4671aa0b
parent78a320542e6cdb2800cd736b2d136e4261d34f43
uprobes: Restrict valid_vma(false) to skip VM_SHARED vmas

valid_vma(false) ignores ->vm_flags, this is not actually right.
We should never try to write into MAP_SHARED mapping, this can
confuse an apllication which actually writes to ->vm_file.

With this patch valid_vma(false) ignores VM_WRITE only but checks
other (immutable) bits checked by valid_vma(true). This can also
speedup uprobe_munmap() and uprobe_unregister().

Note: even after this patch _unregister can confuse the probed
application if it does mprotect(PROT_WRITE) after _register and
installs "int3", but this is hardly possible to avoid and this
doesn't differ from gdb case.

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