diff options
author | Oleg Nesterov <oleg@redhat.com> | 2012-09-16 13:07:41 -0400 |
---|---|---|
committer | Oleg Nesterov <oleg@redhat.com> | 2012-09-29 15:21:53 -0400 |
commit | 78a320542e6cdb2800cd736b2d136e4261d34f43 (patch) | |
tree | eb55bec46370f7890fdec4c44450e52aba043885 /kernel | |
parent | 75ed82ea53bd0d2d8083261123576250f7ba851e (diff) |
uprobes: Change valid_vma() to demand VM_MAYEXEC rather than VM_EXEC
uprobe_register() or uprobe_mmap() requires VM_READ | VM_EXEC, this
is not right. An apllication can do mprotect(PROT_EXEC) later and
execute this code.
Change valid_vma(is_register => true) to check VM_MAYEXEC instead.
No need to check VM_MAYREAD, it is always set.
Signed-off-by: Oleg Nesterov <oleg@redhat.com>
Acked-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/events/uprobes.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/kernel/events/uprobes.c b/kernel/events/uprobes.c index 80e8c7b697b9..a9de40815391 100644 --- a/kernel/events/uprobes.c +++ b/kernel/events/uprobes.c | |||
@@ -106,8 +106,8 @@ static bool valid_vma(struct vm_area_struct *vma, bool is_register) | |||
106 | if (!is_register) | 106 | if (!is_register) |
107 | return true; | 107 | return true; |
108 | 108 | ||
109 | if ((vma->vm_flags & (VM_HUGETLB|VM_READ|VM_WRITE|VM_EXEC|VM_SHARED)) | 109 | if ((vma->vm_flags & (VM_HUGETLB | VM_WRITE | VM_MAYEXEC | VM_SHARED)) |
110 | == (VM_READ|VM_EXEC)) | 110 | == VM_MAYEXEC) |
111 | return true; | 111 | return true; |
112 | 112 | ||
113 | return false; | 113 | return false; |