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; |
